浏览 6028 次
锁定老帖子 主题:关于struts做服务器端表单验证的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-09-30
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <data-sources /> <form-beans> <form-bean name="sysuserForm" type="com.yourcompany.struts.form.SysuserForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action attribute="sysuserForm" input="/sysuser/editsysuser.jsp" name="sysuserForm" path="/sysuser" scope="request" type="com.yourcompany.struts.action.SysuserAction" unknown="false" validate="true"> <forward name="create" path="/sysuser/editsysuser.jsp" redirect="false" contextRelative="false" /> <forward name="list" path="/sysuser/listsysuser.jsp"/> <forward name="edit" path="/sysuser/editsysuser.jsp"/> </action> </action-mappings> <controller bufferSize="4096" debug="0" locale="false" nocache="false" inputForward="false" /> <message-resources null="true" parameter="com.yourcompany.struts.ApplicationResources" /> <plug-in className="com.DBStruts.util.InitHibernatePlugin" /> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> </struts-config> 在什么情况下,会发生错误而显示那个input="/sysuser/editsysuser.jsp"界面?因为我做了个struts服务器端验证,如果加上这个validate.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> <!-- Validation Rules for the Struts Example Web Application $Id: validation.xml,v 1.2 2004/01/04 09:58:26 zhaoxin Exp $ --> <form-validation> <!-- ========== Default Language Form Definitions ===================== --> <formset> <form name="sysuserForm"> <field property="username" depends="required, minlength,maxlength"> <arg0 key="prompt.login"/> <arg1 key="${var:minlength}" name="minlength" resource="false"/> <arg2 key="${var:maxlength}" name="maxlength" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>16</var-value> </var> <var> <var-name>minlength</var-name> <var-value>3</var-value> </var> </field> <field property="userpassword" depends="required, minlength,maxlength"> <arg0 key="prompt.password"/> <arg1 key="${var:minlength}" name="minlength" resource="false"/> <arg2 key="${var:maxlength}" name="maxlength" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>16</var-value> </var> <var> <var-name>minlength</var-name> <var-value>3</var-value> </var> </field> </form> </formset> </form-validation>就只显示这个input="/sysuser/editsysuser.jsp"所指的界面,但我那个validate只是想验证包含表单的那页editsysuser.jsp,当前默认sysuser.do所指的那个页listsysuser.jsp里根本没有表单,而是显示记录列表.为什么也会出错呢? 当我输入sysuser.do时不显示listsysuser.jsp界面而显示editsysuser.jsp呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-10-01
当前默认sysuser.do所指的那个页listsysuser.jsp
------------ 这里不是这么理解的。 当你直接请求sysuser.do时,系统依据validate.xml中的内容进行验证, 发现你的username和userpassword没有输入, 验证出错, 转input对应的页面/sysuer/editsysuser.jsp。 这就是你的这种情况出现在原因 如果你想一开始直接进listsysuser界面,那么多配一个无验证的action的可以了 |
|
返回顶楼 | |
发表时间:2004-10-05
你的validatoin.xml和action里的转发控制没有处理好,你再检查一下这些地方吧
|
|
返回顶楼 | |
发表时间:2004-10-10
Validator框架不能用于验证标准的ActionForm类.如果要使用Validator框架,应该采用ActionForm类的两个子类:org.apache.struts.validator.DynaValidatorForm和org.apache.struts.validator.ValidatorForm.
DynaValidatorForm 支持在动态ActionForm中使用Valiadator框架,ValidatorForm支持在标准的ActionForm中使用Validator框架.无论是对动态ActionForm还是标准ActionForm.配置的方式都是一样的. DynaValidatorForm和ValidatorForm类都实现了validate()方法.所以你创建他们的子类时,不必在覆盖validate()方法 |
|
返回顶楼 | |
发表时间:2004-10-10
所以你的<form-bean>的配置就有问题了.应该是
<form-bean name="youForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="name" type="java.lang.String"/> <form-property name="address" type="java.lang.String"/> ..... /*你的form里面需要验证的属性*/ </form-bean> 大概这样子了.不明白的话在call我 |
|
返回顶楼 | |