我用Strtus框架,用到了里面的validation验证的客户,validation.xml
里面的相关代码如下: <form-bean name="bookForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="registerInfo" type="hotel.financial.domain.Registerinfo"/>
<form-property name="customer" type="hotel.customer.domain.Customer"/>
<form-property name="room" type="hotel.room.domain.Room"/>
<form-property name="enterDate" type="java.lang.String"/>
</form-bean>
validator-rules.xml里面的相关代码如下 <validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
<javascript><![CDATA[
function validateRequired(form) {
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
oRequired = new required();
for (x in oRequired) {
var field = form[oRequired[x][0]];
if (field.type == 'text' ||
field.type == 'textarea' ||
field.type == 'file' ||
field.type == 'select-one' ||
field.type == 'radio' ||
field.type == 'password') {
var value = '';
// get field's value
if (field.type == "select-one") {
var si = field.selectedIndex;
if (si >= 0) {
value = field.options[si].value;
}
} else {
value = field.value;
}
if (trim(value).length == 0) {
if (i == 0) {
focusField = field;
}
fields[i++] = oRequired[x][1];
isValid = false;
}
}
}
if (fields.length > 0) {
focusField.focus();
alert(fields.join('\n'));
}
return isValid;
}
// Trim whitespace from left and right sides of s.
function trim(s) {
return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}
]]>
</javascript>
</validator>然后就是 book.jsp的全部代码如下:<%@ include file="layout/include.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><bean:message key="title.title"/></title>
<style type="text/css">
<!--
.style2 { color: #FFFFFF;
font-weight: bold;
}
.style1 { font-size: 16px;
}
body {
margin-top: 0px;
margin-left: 5px;
}
body,td,th {
font-size: 14px;
color: #000000;
}
-->
</style>
</head><body>
<table width="100%" height="615" border="0" cellpadding="0" cellspacing="1" bgcolor="F3631D">
<tr>
<td height="32" valign="top" bgcolor="F07C44"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="16%" height="31"><img src="image/2top.gif" width="91" height="31"></td>
<td width="2%"> </td>
<td width="67%"><div align="center"><img src="image/m1.gif" width="123" height="32"></div></td>
<td width="15%"> </td>
</tr>
</table></td>
</tr>
<html:form action="book.do?method=book" onsubmit="return validateBookForm(this);">
<html:errors/>
<tr>
<td height="580" valign="top" bgcolor="FED9C7"><div align="center">
<p><br><br>
<span class="style1"><bean:message key="book.title"/></span>
</p><br><br><br>
<table width="50%" border="0" cellpadding="0" cellspacing="1" bgcolor="F77D42"> <tr>
<td width="39%" height="30" align="left" class="style2"> <bean:message key="book.roomNum"/></td>
<td width="61%" bgcolor="#FFDBC6"><input type="text" name="registerInfo.roomNum" value="<bean:write name="room" property="roomnum" scope="request"/>" ></td>
</tr>
<tr>
<td height="30" align="left" class="style2"> <bean:message key="book.name"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="customer.name"></td>
</tr>
<tr>
<td height="30" align="left" class="style2"> <bean:message key="book.phone"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="customer.phoneNum"></td>
</tr>
<tr>
<td height="30" align="left" class="style2"> <bean:message key="book.enterDate"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="enterDate"></td>
</tr> <tr>
<td height="30" align="left" class="style2"> <bean:message key="book.days"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="registerInfo.days"></td>
</tr>
</table> <p><br><br><br><br>
<!--
<input type="image" border=0 src="image/bt_submit.gif" property="submit" value="submit" >
<input type="image" border=0 src="image/bt_reset.gif" property="reset" value="reset" >
<input type="image" border=0 src="pages/image/bt_return.gif" property="return" value="return" >
-->
<html:submit></html:submit>
<br></p>
</div></td>
</tr>
</html:form></table> <html:javascript formName="bookForm" dynamicJavascript="true" staticJavascript="false" />
</body></html>问题就是,本来按照这样的写法,应该是使用了 客户端验证,当验证失败的时候,应该是会直接利用 javascript 弹出窗口说验证哪里有问题的,但是却没有,也没有进行客户端验证就直接提交上了服务器了。
我看过book.jsp的源码,里面确实嵌入了 javascript,但是却没有发生验证,
我不知道是哪里的问题了,请高手指教。
里面的相关代码如下: <form-bean name="bookForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="registerInfo" type="hotel.financial.domain.Registerinfo"/>
<form-property name="customer" type="hotel.customer.domain.Customer"/>
<form-property name="room" type="hotel.room.domain.Room"/>
<form-property name="enterDate" type="java.lang.String"/>
</form-bean>
validator-rules.xml里面的相关代码如下 <validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
<javascript><![CDATA[
function validateRequired(form) {
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
oRequired = new required();
for (x in oRequired) {
var field = form[oRequired[x][0]];
if (field.type == 'text' ||
field.type == 'textarea' ||
field.type == 'file' ||
field.type == 'select-one' ||
field.type == 'radio' ||
field.type == 'password') {
var value = '';
// get field's value
if (field.type == "select-one") {
var si = field.selectedIndex;
if (si >= 0) {
value = field.options[si].value;
}
} else {
value = field.value;
}
if (trim(value).length == 0) {
if (i == 0) {
focusField = field;
}
fields[i++] = oRequired[x][1];
isValid = false;
}
}
}
if (fields.length > 0) {
focusField.focus();
alert(fields.join('\n'));
}
return isValid;
}
// Trim whitespace from left and right sides of s.
function trim(s) {
return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}
]]>
</javascript>
</validator>然后就是 book.jsp的全部代码如下:<%@ include file="layout/include.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title><bean:message key="title.title"/></title>
<style type="text/css">
<!--
.style2 { color: #FFFFFF;
font-weight: bold;
}
.style1 { font-size: 16px;
}
body {
margin-top: 0px;
margin-left: 5px;
}
body,td,th {
font-size: 14px;
color: #000000;
}
-->
</style>
</head><body>
<table width="100%" height="615" border="0" cellpadding="0" cellspacing="1" bgcolor="F3631D">
<tr>
<td height="32" valign="top" bgcolor="F07C44"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="16%" height="31"><img src="image/2top.gif" width="91" height="31"></td>
<td width="2%"> </td>
<td width="67%"><div align="center"><img src="image/m1.gif" width="123" height="32"></div></td>
<td width="15%"> </td>
</tr>
</table></td>
</tr>
<html:form action="book.do?method=book" onsubmit="return validateBookForm(this);">
<html:errors/>
<tr>
<td height="580" valign="top" bgcolor="FED9C7"><div align="center">
<p><br><br>
<span class="style1"><bean:message key="book.title"/></span>
</p><br><br><br>
<table width="50%" border="0" cellpadding="0" cellspacing="1" bgcolor="F77D42"> <tr>
<td width="39%" height="30" align="left" class="style2"> <bean:message key="book.roomNum"/></td>
<td width="61%" bgcolor="#FFDBC6"><input type="text" name="registerInfo.roomNum" value="<bean:write name="room" property="roomnum" scope="request"/>" ></td>
</tr>
<tr>
<td height="30" align="left" class="style2"> <bean:message key="book.name"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="customer.name"></td>
</tr>
<tr>
<td height="30" align="left" class="style2"> <bean:message key="book.phone"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="customer.phoneNum"></td>
</tr>
<tr>
<td height="30" align="left" class="style2"> <bean:message key="book.enterDate"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="enterDate"></td>
</tr> <tr>
<td height="30" align="left" class="style2"> <bean:message key="book.days"/></td>
<td bgcolor="#FFDBC6"><input type="text" name="registerInfo.days"></td>
</tr>
</table> <p><br><br><br><br>
<!--
<input type="image" border=0 src="image/bt_submit.gif" property="submit" value="submit" >
<input type="image" border=0 src="image/bt_reset.gif" property="reset" value="reset" >
<input type="image" border=0 src="pages/image/bt_return.gif" property="return" value="return" >
-->
<html:submit></html:submit>
<br></p>
</div></td>
</tr>
</html:form></table> <html:javascript formName="bookForm" dynamicJavascript="true" staticJavascript="false" />
</body></html>问题就是,本来按照这样的写法,应该是使用了 客户端验证,当验证失败的时候,应该是会直接利用 javascript 弹出窗口说验证哪里有问题的,但是却没有,也没有进行客户端验证就直接提交上了服务器了。
我看过book.jsp的源码,里面确实嵌入了 javascript,但是却没有发生验证,
我不知道是哪里的问题了,请高手指教。
如下:
<form-bean name="bookForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="registerInfo" type="hotel.financial.domain.Registerinfo" depends="required"/>