Struts2 表单字段验证不起作用

Struts2 form-fields validation does not work

我正在尝试按照 here(struts2 文档)所述的方式实施验证。我的 Class :

public class FatturaAction extends BaseAction {

    private static final long serialVersionUID = 6586322371651933659L;
    private FatturaForm fatturaForm;

    //getter and setter
}

FatturaForm:

public class FatturaForm {

    private Date data;

    //getter and setter
}

我的 XML (FatturaAction-validaton.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN"
          "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
<validators>
    <field name="fatturaForm.data"> 
        <field-validator type="required"> 
            <message>You cannot leave the email address field empty.</message>
        </field-validator>
    </field>
</validators>

验证未命中,即使该字段为空。我正在使用 <interceptor-ref name="defaultStack" />,因此激活了验证拦截器。

编辑:

我也试过 non field validator:

<validators>
    <validator type="required"> 
        <param name="fieldName">data</param> 
        <message>You must enter a value for bar.</message> 
    </validator>
</validators>

也没命中。

您使用的 DTD 有误:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" 
          "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">

最新版本 Struts 2 的正确版本是

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
          "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

还要确保您的 FatturaAction-validaton.xmlaction 文件夹中,而不是在 bean 中 文件夹(仅适用于 访客 验证)