日期:2014-05-20  浏览次数:20832 次

Struts的Validator问题,比较复杂求达人解答!
我的程序里面用到了动态验证表单DynaValidatorActionForm
在struts-config.xml的配置如下:
code=XML]<form-bean name="customerForm" 
  type="org.apache.struts.validator.DynaValidatorActionForm">
  <form-property name="customer" type="org.test.struts.entity.Customer"/>
  <form-property name="operate" type="java.lang.String"/>
  </form-bean>
[/code]

其中org.test.struts.entity.Customer这个类里有属性name,address,email

在validation.xml的配置如下
XML code

<formset>
    <form name="customerForm">
      <field property="customer.name" depends="required">
        <arg key="page.customer.index.name.label" position="0"/>                      
      </field>
    </form>
  </formset>



之所以在field元素的property属性用"customer.name"
是因为我在JSP页面里面用的是
<td>
<label>
<bean:message key="page.customer.index.name.label"/>
</label>
<html:text property="customer.name" size="8" maxlength="4"/>
</td>

运行程序,为customer赋值都没有任何问题,数据也可以正常入数据库,证明上面用的customer.name没有任何问题。

但是如果我在文本框内不输入任何数据,提交后还是保存到了数据库,那个required校验器没有器到任何作用。

请问象在这种时候(用的customer.name,一个javabean做传输属性名)要如何才可以让required校验器起到作用。


另:我自己修改了一下,改成name也不行,改成customer也不行。到底在validation.xml要如何做?


谢谢!!!!!!!!!!!!!!


------解决方案--------------------
原因:
type="org.apache.struts.validator.DynaValidatorActionForm
改成type="org.apache.struts.validator.DynaValidatorForm

因为你在你的validate.xml中配置的是
<form name="customerForm">
<field property="customer.name" depends="required">
<arg key="page.customer.index.name.label" position="0"/>
</field>
</form>

<form name="customerForm">name中是你的form的名字
所以要用DynaValidatorForm