为什么我的validate不进行校验?

cncba 2005-05-17 01:35:51
struts-config.xml
======================
<?xml version="1.0" encoding="iso-8859-1"?>
<!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="userLogonFormBean" type="bean.userLogonFormBean" />
-->
<form-bean name="userLogonFormBean" type="org.apache.struts.validator.DynaValidatorForm" >

<form-property
name="username"
type="java.lang.String"/>
<form-property
name="password"
type="java.lang.String"/>
</form-bean>

</form-beans>

<global-forwards>
<forward name="logon" path="/userAction.do?action=logon"/>
<forward name="logoff" path="/userLogoff.do"/>
</global-forwards>

<action-mappings>

<action
type="mystruts.userAction"
scope="request"
path="/userAction"
>
<forward name="test" path="/pages/test.jsp" />
<forward name="welcome" path="/pages/welcome.jsp" />
<forward name="logon" path="/pages/logon.jsp" />
</action>

<action
type="mystruts.userLogonAction"
name="userLogonFormBean"
scope="request"
validate="true"
path="/userLogonAction"
input="/pages/logon.jsp"
>
<forward name="logon" path="/pages/logon.jsp"/>
<forward name="success" path="/pages/welcome.jsp"/>
</action>


</action-mappings>

<message-resources parameter="resources.application"/>
<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>

application.properties
=================================

errors.required={0} is required.
errors.minlength={0} cannot be less than {1} characters.
errors.maxlength={0} cannot be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid email address

userLogon.username.notfind=user not found!
userLogon.password.wrong=password is wrong!


userLogonAction.java
=================================
package mystruts;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.validator.DynaValidatorForm;
import org.apache.struts.validator.FieldChecks;
import bean.*;
import constant.*;
public class userLogonAction extends Action
{
public ActionForward execute(
ActionMapping map,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws IOException,ServletException

{
// userLogonFormBean logonform=(userLogonFormBean)form;
DynaValidatorForm logonform=(DynaValidatorForm)form;
userInfo user=new userInfo(Constant.USER_PROPERTIES);
ActionErrors errors=new ActionErrors();
// try{
// String username=logonform.getUsername();
// String password=logonform.getPassword();
String username=(String)logonform.get("username");
String password=(String)logonform.get("password");
int logonMsg=user.checkUser(username,password);
if (logonMsg!=user.USER_ISOK)
{
if (logonMsg==user.USER_NOTFOUND)
{
errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("userLogon.username.notfind"));
}
if (logonMsg==user.USER_WRONG_PASSWORD)
{
errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("userLogon.password.wrong"));
}
this.saveErrors(request,errors);
return map.findForward("logon");
}
else
{
HttpSession session=request.getSession();
session.setAttribute("user",form);
return map.findForward("success");
}
// }
// catch(Exception e)
// {
// throw Exception;
// }
//

}

}

pages/logon.jsp
====================================
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>
<HTML>
<HEAD>
<TITLE></TITLE><!--bean:message key="logon.jsp.title"/-->
<html:base/>
</HEAD>
<BODY>
<h3></h3><!--bean:message key="logon.jsp.page.heading"/-->
<html:errors/>
<html:form action="/userLogonAction.do" focus="username">
<TABLE border="0" width="100%">
<TR>
<TH align="right">username:</TH><!--bean:message key="logon.jsp.prompt.username"/-->
<TD align="left"><html:text property="username"/></TD>
</TR>
<TR>
<TH align="right">password:</TH><!--bean:message key="logon.jsp.prompt.password"/-->
<TD align="left"><html:password property="password"/></TD>
</TR>
<TR>
<TD align="right">
<html:submit>ok</html:submit><!--bean:message key="logon.jsp.prompt.submit"/-->
</TD>
<TD align="left">
<html:reset>reset</html:reset><!--bean:message key="logon.jsp.prompt.reset"/-->
</TD>
</TR>
</TABLE>
</html:form>
</BODY>
</HTML>

FORM可以正常使用,就是不进行校验。logs里记录:
2005-5-17 13:32:31 org.apache.struts.validator.DynaValidatorForm validate
严重: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
org.apache.commons.validator.ValidatorException: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:627)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:557)
at org.apache.commons.validator.Field.validateForRule(Field.java:811)
at org.apache.commons.validator.Field.validate(Field.java:890)
at org.apache.commons.validator.Form.validate(Form.java:174)
at org.apache.commons.validator.Validator.validate(Validator.java:367)
at org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:110)
at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:919)
....
...
..
这是为什么啊?哪们大侠帮帮我?两天了,我吃下饭睡不着觉。
白头发都长出来了。
...全文
287 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cncba 2005-05-18
  • 打赏
  • 举报
回复
哈哈,搞定了。
不过不知道问题出在哪儿。

我又用struts1.2.6的struts-blank解压把我的东西加进去,就可以了。
我觉得可能lib/*.*文件的版本跟其它的文件版本不太一致。
我只保留了struts-config.xml,web.xml,validate.xml和我的class
其它文件都重新覆盖了一遍。
ayace 2005-05-18
  • 打赏
  • 举报
回复
看了半天也没理清头绪,帮你UP一下吧
cncba 2005-05-17
  • 打赏
  • 举报
回复
liuhb001(007) :

先谢谢你!
  不过这种方法我已经试过了,不行。不知道log里的这些东西是什么原因造成的?
我把required换成minlength,同样也出这些东西,只是validateRequired变成了validateMinLength。

2005-5-17 17:56:50 org.apache.struts.validator.DynaValidatorForm validate
严重: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
org.apache.commons.validator.ValidatorException: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:627)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:557)
at org.apache.commons.validator.Field.validateForRule(Field.java:811)
at org.apache.commons.validator.Field.validate(Field.java:890)
at org.apache.commons.validator.Form.validate(Form.java:174)
。。。。。
。。。。。。
liuhb001 2005-05-17
  • 打赏
  • 举报
回复
<field property="username" depends="required">
<arg key="${var:username}" resource="false" position="0"/>
<var>
<var-name>username</var-name>
<var-value>Username</var-value>
</var>
</field>
该为
<field property="username" depends="required">
<arg0 key="errors.username"/>
</field>

注:errors.username要在application.properties文件里定义
liuhb001 2005-05-17
  • 打赏
  • 举报
回复
"只输入username不输入password会显示password is wrong"只能说明从action里报错没问题!
我认为是你的validation.xml出问题了!
cncba 2005-05-17
  • 打赏
  • 举报
回复
没有高手愿意帮忙吗?
cncba 2005-05-17
  • 打赏
  • 举报
回复
可以,只输入username不输入password就会显示password is wrong!.

可是校验required的功能却不起作用。
liuhb001 2005-05-17
  • 打赏
  • 举报
回复
你能调到application.properties文件里的东西吗?
cncba 2005-05-17
  • 打赏
  • 举报
回复
validator-rules.xml是struts1.2.6里自带的那个。
validation.xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<!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="userLogonFormBean">
<field property="username" depends="required">
<arg key="${var:username}" resource="false" position="0"/>
<var>
<var-name>username</var-name>
<var-value>Username</var-value>
</var>
<!--
-->

</field>

<field property="password" depends="required">
<arg key="${var:password}" resource="false" position="0"/>
<var>
<var-name>password</var-name>
<var-value>Password</var-value>
</var>
<!--
-->
</field>
</form>
</formset>

</form-validation>
  • 打赏
  • 举报
回复
呵呵,好像是validator-rules.xml,/WEB-INF/validation.xml这两个文件的内容的具体是哪个没看到不清楚。
cncba 2005-05-17
  • 打赏
  • 举报
回复
我找了两天了,例子倒是很多,可出现我这样的问题的很少啊。
能看的我几乎都看过了。

老兄帮我看看是哪的问题吧?
miaoliujun 2005-05-17
  • 打赏
  • 举报
回复
这是为什么啊?哪们大侠帮帮我?两天了,我吃下饭睡不着觉。
白头发都长出来了。
======================

假如你真是两天了,那为什么不去到网上找找资料呢?这样例子也太多了。

客户端验证的话,需要将你的jsp中加一些短语的。你自己用google搜索一下吧。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧