楼主还没有理解
struts1.2之后并没有摈弃actionForm 中的validate方法,我们照样可以使用
你说的validation.xml和validate-rules.xml是validate框架,它的验证原理是生成js代码,其实还是客户端验证。
而ActionForm里面的validate方法是服务器端验证。
他们不矛盾的,我们一般结合起来使用他们。
struts1.2之后并没有摈弃actionForm 中的validate方法,我们照样可以使用
你说的validation.xml和validate-rules.xml是validate框架,它的验证原理是生成js代码,其实还是客户端验证。
而ActionForm里面的validate方法是服务器端验证。
他们不矛盾的,我们一般结合起来使用他们。
链接是http://127.0.0.1/struts-examples/validator/registration.do我看了他的源码,发现LoginActionForm里面并没有使用validator方法
并且也没有使用js客户端验证,因为在registration.jsp下没有使用<html:javascript
这个标记,并且验证后的效果是在网页显示,并不是弹出对话框,所以必然是服务器端验证
问题就是他没有写validator方法如何进行的验证,难道只是配置了struts-config.xml和validation.xml,但是我这样试了,行不通,总是不经过验证直接就跳转至欢迎页面! 这就是我心中的疑惑,他如何生效的??
请指教!!谢谢!
然后页面里面加上这个
<html:form action="/login" method="post" focus="loginname" onsubmit="return validateLoginForm(this);">这个是我自己写的,LoginForm是在struts-config.xml里面配置的FormBean的名字
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html>
<head>
<title>mvc test</title>
</head><body>
<html:errors/>
<html:form action="/login" method="post" focus="userName" onsubmit="return validateloginActionForm(this);">
<table width="43%" border=1 align="center" cellpadding="0" cellspacing="0">
<tr>
<th width="49%" align="right">userName:</th>
<td width="51%" align="left">
<html:text property="userName" size="20" maxlength="20"/>
</td>
</tr>
<tr>
<th align="right">password:</th>
<td align="left">
<html:password property="password" size="20" maxlength="20"/>
</td>
</tr>
<tr>
<td align="right">
<html:submit/>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="loginActionForm" type="struts.LoginActionForm" />
</form-beans>
<action-mappings>
<action input="input" name="loginActionForm" path="/login" scope="session" type="struts.LoginAction" validate="true">
<forward name="input" path="/login.jsp" />
<forward name="success" path="/hello.jsp">
</forward>
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
<set-property property="stopOnFirstError" value="true"/>
</plug-in>
</struts-config>validation.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="loginAtionForm">
<field property="userName" depends="required">
<arg0 key="app.userName"/>
</field>
<field property="password" depends="required">
<arg0 key="app.password"/>
</field>
</form>
</formset>
</form-validation>
LoginActionForm.javapackage struts;import org.apache.struts.validator.ValidatorForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;public class LoginActionForm
extends ValidatorForm {
private String password;
private String userName;
public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public void setUserName(String userName) {
this.userName = userName;
} public String getUserName() {
return userName;
}}
LoginAction.javapackage struts;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.Action;
import javax.servlet.http.HttpSession;public class LoginAction
extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse servletResponse) {
LoginActionForm loginActionForm = (LoginActionForm) actionForm;
loginActionForm.setUserName("loginName");
loginActionForm.setPassword("password");
return actionMapping.findForward("success");
}
}
请指教,多谢!!!
<form name="loginAtionForm">
<field property="userName" depends="required">
不知道是不是你的代码贴错了,上面的form名字要统一其他我也没看出问题:(当然我的页面里面加了
<html:javascript formName="LoginForm" />
~~~~~~~~
唉!
写的都是loginActionForm jsp页面里面也是loginActionForm哪里还不一致呀?!!