Struts2模型驱动的验证不起作用

时间:2014-07-22 18:29:49

标签: java validation struts2 visitor model-driven

我已在我的应用程序中实现了模型驱动验证,但验证不适用于以下警告。

  

警告:访问对象为空,VisitorValidator将无法正确处理验证。请确保访问对象不为null,以使VisitorValidator正常运行

知道为什么吗?

这是我的Action类。

package actions;

import beans.CarListing;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class ListCarAction extends ActionSupport implements ModelDriven{
    public String execute() {
        System.out.println("ListCarAction x" + carListing.getUrl());
        return SUCCESS;
    }

    private CarListing carListing = new CarListing();

    public Object getModel() {
        return carListing;
    }
}

这是我的ListCarAction-validation.xml

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="model">
        <field-validator type="visitor">
            <param name="appendPrefix">false</param>
            <message>Car Listing: </message>
        </field-validator>
    </field>
</validators>

这是名为CarListing-validation.xml的bean验证器XML。

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="url">
        <field-validator type="requiredstring">
            <message>URL is required field.</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">1</param>
            <param name="minLength">30</param>
            <message>The URL must be at least 1-30 characters.</message>
        </field-validator>
    </field>
</validators>

1 个答案:

答案 0 :(得分:1)

  1. 确保为Action使用正确配置的拦截器堆栈,包括以下所有拦截器:modelDrivenparamsvalidation。其中还有其他拦截器,它们之间没有相互转换位置非常重要)

  2. 确保CarListing-validation.xml文件放在beans文件包中,放在CarListing.class文件中,而不是放在actions包裹中,而不是另一个xml文件。