读书人

新人求帮助(struts 框架验证)解决

发布时间: 2012-04-02 19:58:59 作者: rapoo

新人,求帮助(struts 框架验证)
本来想试试struts的框架验证,结果它不执行form 的validate()
代码如下:
Form
package com.yourcompany.struts.form;
import org.apache.struts.validator.ValidatorActionForm;
public class loginForm extends ValidatorActionForm{
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}



}

Action
package com.yourcompany.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {



return null;
}
}


struts.config
<?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>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="com.yourcompany.struts.form.loginForm" >
<form-property name="userName" type="java.lang.String" />
<form-property name="passWord" type="java.lang.String" />
</form-bean>
</form-beans>


<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.yourcompany.struts.action.LoginAction">
<set-property property="cancellable" value="true" />
<forward name="succ" path="/index.jsp" />
</action>

</action-mappings>

<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validation.xml" />
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml" />
</plug-in>


</struts-config>



login.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
<html:form action="/login">
userName : <html:text property="userName"/><html:errors property="userName"/><br/>
passWord : <html:text property="passWord"/><html:errors property="passWord"/><br/>


<html:submit/><html:cancel/>
</html:form>
</body>
</html>


validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<form-validation>
<formset>
<form name="loginForm">
<!-- userName -->
<field property="userName" depends="required">
<arg key="login.userName"/>
</field>

<!--password -->
<field property="passWord" depends="required">
<arg key="login.passWord"/>
</field>
</form>
</formset>
</form-validation>

ApplicationResources.properties
login.userName=user name
login.passWord=user password
errors.required={0} must be input
# Resources for parameter 'com.yourcompany.struts.ApplicationResources'




[解决办法]
请再确认下大小写和名称的对应正确性

[解决办法]
看你代码没看出啥问题。到页面加上这个看有么有错误信息。<html:errors property="userName"/><!-- 此处对应验证xml中的property值 -->
[解决办法]
配置文件名要和你的action名一样的

[解决办法]
return 不能返回空值,的跳转到你要显示的页面mapping.findForward("succ");你试试

读书人网 >J2EE开发

热点推荐