这几天一直都忙着写代码,我用的struts是1.3的版本的在开发的过程中同时也出现了一些bug。下面就来说下这些bug。大多是在做表单验证时出现的。
一、form 'formName' not found in Local 'zh_CN'。这是个很奇怪的问题解决了半天还是如此。最后想到是不是国际化的资源文件出了什么问题呢,果然是这个的问题因为我用的eclipse版本是3.3的而用的国际化插件是jinto好像是它的问题了,于是我换成了esourceBundleEditor_v0.7.7。OK问题解决。
二、ERROR FieldChecks:1318 - minlength validation failed for property password: java.lang.IllegalArgumentException: Variable minlength is missing.这个问题的出现在是因为validation.xml中的配置的问题了,我一开始是这样写的:<field property="password"
depends="required,minlength,maxlength">
<arg position="0" key="error.password" />
<arg position="1" name="min" key="${var:min}"
resource="false" />
<arg position="1" name="max" key="${var:max}"
resource="false" />
<var>
<var-name>min</var-name>
<var-value>6</var-value>
</var>
<var>
<var-name>max</var-name>
<var-value>16</var-value>
</var>
</field>
最后改成这样的就行了
<field property="password"
depends="required,minlength,maxlength">
<arg position="0" key="error.password" />
<arg position="1" name="minlength" key="${var:minlength}"
resource="false" />
<arg position="1" name="maxlength" key="${var:maxlength}"
resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>16</var-value>
</var>
</field>
在这里顺便说一在1.3中怎么样来进行表单的验证:首先你要先在你要验证的表单所在的jsp里写上这么一名话<html:javascript formName="h_registerForm"/>这里的formName是你要进行验证的表单的名字,新建一个validation.xml文件在这里面的name要和上面的formName一致。
<form name="h_registerForm">
<field property="searchKey" depends="required">
<arg position="0" key="search.key" />
</field>
</form>
现就是在1.2中参数是以arg0,arg1的形式出现的而在1.3中是用position=""的形式出现的其中position="o"代表的是第1个参数。以此类推。
当然了要进行表单的验证你的form类首先要继承VlidatorForm类,在struts-config.xml中也要加入validator的插件,不过和1.2中的写去有所有同。如下:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/org/apache/struts/validator/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>