首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • struts中用validation验证无效
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • beamofsoul
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 07:19:10 楼主
    RT!
    没有报任何错误信息,就好像根本就没写似的。
    struts-config.xml

    <form-bean name="userLoginForm" type="com.yourcompany.struts.validator.DynaValidatorForm.UserLoginForm" >
    <form-property name="userName" type="java.lang.String" />
    <form-property name="password" type="java.lang.String" />

    <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>

    validation.xml

    <form name="userLoginForm">
    <field property="userName"
    depends="requried,minlength">
    <arg0 key="label.username"/>
    <arg1 name="minlength" key="${var:minlength}" resource="false"/>
    <var>
    <var-name>minlength </var-name>
    <var-value>3 </var-value>
    </var>
    </field>
    <field property="password"
    depends="required,minlength">
    <arg0 key="label.password"/>
    <arg1 name="minlength" key="${var:minlength}" resource="false"/>
    <var>
    <var-name>minlength </var-name>
    <var-value>3 </var-value>
    </var>
    </field>

    ApplicationResources.properties

    title.login = Login Page
    item.submit = Submit

    error.name.required=A UserName is Required
    error.psw.required=A Password is Required
    error.nickname.required=A Nickname is Required
    label.username=userName
    label.password=password
    label.nickname=nickname

    error.required={0} can not be null.
    error.minlength={0} can not less than {1} char.
    error.maxlength={0} can not be greater than {1} characters.
    error.invalid={0} is invalid.

    PS:UserLoginForm中没有实现validate方法,是否需要写~为什么?
    120  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • allenney
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 07:50:411楼 得分:0
    窗体的FORM类不能继承ActionForm,要继承ValidatorForm
    窗体的FORM类一定不能实现validate方法,因为校验框架是在父类中实现的,如果在窗体的FORM类中实现了此方法,则会覆盖父类的方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • allenney
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 07:51:412楼 得分:0
    validator的这个框架。总的来说,,,不太好对付。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • beamofsoul
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 09:00:403楼 得分:0
    问题是怎么把验证让他能用啊~现在用不了,跟没写一样,可愁死我了~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jianpc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:26:544楼 得分:0
    页面引入相应的JS了吗?提交表单的时候走验证方法了吗?把页面也贴出来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gongyali2005
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:45:425楼 得分:0
    引用 1 楼 allenney 的回复:
    窗体的FORM类不能继承ActionForm,要继承ValidatorForm
    窗体的FORM类一定不能实现validate方法,因为校验框架是在父类中实现的,如果在窗体的FORM类中实现了此方法,则会覆盖父类的方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • beamofsoul
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 18:57:356楼 得分:0
    这个是页面:
    <%@ page language="java" pageEncoding="ISO-8859-1"%>

    <%@ taglib uri="/WEB-INF/struts-html" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html>
      <head>
        <html:base />
        <title>userLogin.jsp </title>
       
          <script type="text/javascript" language="javascript"> 
    <!-- 
            function register(){ 
            var form = document.forms[0]; 
            form.method = 'post';   
            form.action = 'register.jsp'; 
            form.submit(); 
            }
    </script>

      </head>

     
      <body background="image/userlogin.jpg">&nbsp; 
        <p>&nbsp; </p>
        <p>&nbsp; </p>
        <p>&nbsp; </p>
        <p>&nbsp; </p>
        <p>&nbsp; </p>
        <p>&nbsp; </p>
        <p>&nbsp; </p>
        <div align="center">This a struts page. <br>
        </div>
        <html:form action="userLoginAction?method=userLogin"  method="post">
        <div align="center">username
          <html:text property="userName" size="20"/>
          <html:errors property="userName" />
          password
          <html:password property="password" size="20"/>
          <html:errors property="password" />
        </div>
        <p align="center">
        <html:submit  value="submit" />
        <html:reset  value="reset" />
        <html:submit  value="register" onclick="register('register') "/>
        </html:form>
       
      </body>
    </html:html>


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sdywcd
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 20:19:337楼 得分:0
    我也遇见过,1楼的说法,我觉得是ok的。我想问validation可以做验证码的验证工作吗?也就是说,validation可以取得session中的值吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lizejia01
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 21:07:198楼 得分:0
    这个功能很强, 注:struts-config.xml中,input 属性,
    而且Action不能继承DispatchAction
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ouyangxiaokang6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 15:19:449楼 得分:0
    form 里继承ValidatorActionFormEx了吗?如果没有也可能不报message
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zeng_84_long
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 09:59:2910楼 得分:0
      你在html:form标签中添加红色部分 <html:form action="userLoginAction?method=userLogin"  method="post" onsubmit="validateUserLoginForm">
    还有你忘记写
    <html:javascript formName="userLoginForm"/>了,你没有调用验证框架而已
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • beamofsoul
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 10:43:5111楼 得分:0
    谢谢10楼的zeng_84_long
    我确实没有加onsubmit="validateUserLoginForm“ 和 <html:javascript formName="userLoginForm"/>
    现在我加上了,可是还是没有任何效果,感觉没有用上似的, <html:error>也没有输出,不知道为什么~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chensugang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 19:11:4512楼 得分:0
    com.yourcompany.struts.validator.DynaValidatorForm.UserLoginForm 
    改成
    com.yourcompany.struts.validator.DynaValidatorForm

    你用的是动态Form吧,没有必要写Form类的名字了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • beamofsoul
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 09:54:4013楼 得分:0
    刚才用Myeclipse启动了一下猫,发现有如下错误,说是找不到'/WEB-INF/validation.xml',所以validator无效!
    严重: Skipping validation rules file from '/WEB-INF/validation.xml'.  No stream could be opened.
    javax.servlet.ServletException: Skipping validation rules file from '/WEB-INF/validation.xml'.  No stream could be opened.
    怎么办?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ouyangxiaokang6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 11:49:2314楼 得分:0
    strutsconfig的plug in里面把validation.xml加进去了吗?
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml <set-property property="stopOnFirstError" value="false" />
    </plug-in>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zeng_84_long
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 09:54:5015楼 得分:0
    引用 11 楼 beamofsoul 的回复:
    谢谢10楼的zeng_84_long
    我确实没有加onsubmit="validateUserLoginForm“ 和 <html:javascript formName="userLoginForm"/>
    现在我加上了,可是还是没有任何效果,感觉没有用上似的, <html:error>也没有输出,不知道为什么~


    呵呵,楼主,把 <html:errors /> 标签去掉,在这里不需要


    struts-config里
      <message-resources parameter="ApplicationResources" />
      <message-resources key="testrs" parameter="com.lizongbo.localstring.TestRs" />

    validator.xml里
        <form name="EditActionForm">
        <field property="rowid" depends="required">
          <arg key="EditActionForm.rowid" position="0" resource="true"/>
        </field>
        <field property="msgid" depends="required">
          <arg key="msgid" position="0" resource="true" bundle="testrs"/>
        </field>
        </form>


    validator其实很容易,把过程理清楚就可以。还有一个问题就是要注意validator的xml文件头的版本问题

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • beamofsoul
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 10:47:4816楼 得分:0
    谢谢zeng_84_long 的帮助~
    但是我想问一下,这个和我写的validation的用法,我感觉很不一样~
    没有写 <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>
    也没有写 <html:error />
    这是为什么呢?难道有两种不同的方法么?还是怎么样~
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved