我已在我的应用程序中实现了模型驱动验证,但验证不适用于以下警告。
警告:访问对象为空,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>
答案 0 :(得分:1)
确保为Action使用正确配置的拦截器堆栈,包括以下所有拦截器:modelDriven
,params
,validation
。其中还有其他拦截器,它们之间没有相互转换位置非常重要)
确保CarListing-validation.xml
文件放在beans
文件包中,放在CarListing.class
文件中,而不是放在actions
包裹中,而不是另一个xml文件。