论坛首页 入门技术论坛

struts1.x中的验证问题

浏览 1893 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-13  
首先,我们在使用STRUTS验证的时候,要让我们STRUTS里的FORM继承于org.apache.struts.validator.ValidatorForm,如下图所示:


然后,在里加如属性,方法(由于这里的方法我们自己定义,所以就不选已设置的方法了)和JSP页面(JSP页面被自动设置到WebRoot下的form里,非常好的实施了MVC架构)。

并且在我们要实施动作的JSP页面中,在<body>体里要写上这样下列代码:
<html:form action="/log"(与struts-config.xml中的PATH相对应) onsubmit="return validateLogForm(this)”(提交后返回到验证的FORM);>

<html:javascript formName="logForm" />(使用js对logForm表单验证,logForm是LogForm表单的匿称,与struts-config.xml中的<form-bean name="logForm"………>相对应。


然后在ApplicationResources.properties里从validator-rules.xml复制下列语句
# Struts Validator Error Messages
   errors.required={0} is required.
   errors.minlength={0} can not be less than {1} characters.
   errors.maxlength={0} can not 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 an invalid credit card number.
   errors.email={0} is an invalid e-mail address.

#logform 自定义    logform.username= wrong.
这些都是我们以后验证时要在弹出框中显示的语句。
Errors后的内容是要验证的规则,这些验证方法都可以在验证规则即validator-rules.xml里找到。


我们在struts-config.xml里:
<action-mappings >
<action
      attribute="logForm"
      input="/form/log.jsp"
      name="logForm"
      path="/log"
      scope="request"
      type="com.yourcompany.struts.action.LogAction"
      validate="true">
      <forward name="s" path="/form/MyJsp.jsp" />
</action>
里面必须加上validate="true"这么句代码,否则,验证机制将可能不会运行。
另外,配置文件中还须加入以下代码,表示使用插件:
<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验证工程的时候,在工程的WEB-INF里是没有validation.xml的,这就要求我们自己来添加这个XML文件了。我们可以这样做:
先新建一个validation.xml,然后找到我们的struts-config.xml,然后在Design中按鼠标右键—>NEWNEW PLUGINADD,然后在plugin class里写入org.apache.struts.validator.ValidatorPlugIn,然后在set property框中的property里

复制validator-rules.xml中的一句代码:pathnames,在value里复制:/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml,表明使用的插件文件,最后,在validation.xml里,我们写入下列代码:
   <?xml version="1.0" encoding="ISO-8859-1" ?>
  <!DOCTYPE form-validation (View Source for full doctype...)>
- <form-validation>
- <formset>
- <form name="logForm">所要所要验证的表单昵称
- <field property="username" depends="mask,required">对于什么属性进行验证,依赖于哪些方法
  <arg0 key="logform.username" />从ApplicationResources.properties里找寻相关的方法,可以是自己定义的方法,也可以用已有的方法
  <arg1 name="mask" key="errors.invalid" resource="true" />从ApplicationResources.properties里找寻相关的方法,resource=true表示使用资源束里定义的资源语句,使用false表明不使用资源束里的资源语句,直接使用key属性定义的值。
- <var>
  <var-name>mask</var-name>
  <var-value>pan</var-value> 验证某属性的值是否与设定值相符合。
  </var>
  </field>
  </form>
  </formset>
  </form-validation>
我们在实体类里建立了username属性,然后通过验证机制,将与我们的username设定的值不一致的结果显示其错误。(我们给定的属性的值是pan)
好,下面我们来看下我们的验证出来的结果:




以上图示表明如果username为空或错误,则通过STRUTS的验证机制来进行验证并报错。

   发表时间:2008-04-16  
我想问一下,要用validator验证的时候要在struts-config.xml文件里先配置<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-user.xml,那么plug-in我写在哪一个xml文件中才能有效配置validator,我分别在总的struts-config.xml和单独的struts-config-user.xml中都有引入plug-in但就是没用啊,服务器启动时,没有显示读取相应的validator-rule.xml以及validation.xml文件的信息。第一次用validator做验证,问的有点小白,望指导下,谢谢
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics