我的程序里面用到了动态验证表单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