3

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

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

知道为什么吗?

这是我的动作课。

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>
4

1 回答 1

1
  1. 确保您为您的操作使用正确配置的拦截器堆栈,包括按此顺序排列的所有以下拦截器:modelDrivenparamsvalidation。其中还有其他拦截器,重要的是它们不要相互交换位置)

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

于 2014-07-23T09:07:59.260 回答