Validation Struts2验证拦截器转到xhtml文档
背景:我将Struts2与REST和Convention插件一起使用,因此我的设置中99%都在我编写的类中,而不是在xml文件中。使用约定,您可以使用方法上的注释配置服务器端和客户端验证,例如,我使用的Account Create方法如下所示:Validation Struts2验证拦截器转到xhtml文档,validation,xhtml,struts2,action,interceptor,Validation,Xhtml,Struts2,Action,Interceptor,背景:我将Struts2与REST和Convention插件一起使用,因此我的设置中99%都在我编写的类中,而不是在xml文件中。使用约定,您可以使用方法上的注释配置服务器端和客户端验证,例如,我使用的Account Create方法如下所示: @Validations( requiredFields = { @RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "user
@Validations(
requiredFields = {
@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "userName", message = "You must enter a value for field."),
@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "firstName", message = "You must enter a value for field."),
@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "lastName", message = "You must enter a value for field."),
@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "password", message = "You must enter a value for field.")
},
emails = {@EmailValidator(type = ValidatorType.SIMPLE, fieldName = "email", message = "You must enter a value for email.")},
stringLengthFields = {
@StringLengthFieldValidator(type = ValidatorType.SIMPLE, trim = true, minLength = "6", maxLength = "16", fieldName = "userName", message = "Username must be at least 6 letters."),
@StringLengthFieldValidator(type = ValidatorType.SIMPLE, trim = true, minLength = "8", maxLength = "16", fieldName = "password", message = "Password must be at least 8 characters.")
}
)
public String create() {
//create the account
}
这非常有效,javascript被正确地推送到JSP,表单在点击submit之前被验证,服务器端验证也非常有效,如果所有条件都得到满足,create方法被正确调用,一切正常
问题在于绕过客户端验证而服务器端验证失败。所有文档都告诉我,验证拦截器将用户发送回表单,并设置了正确的字段错误,以便用户可以修复他们的问题,但在我的应用程序中,它只是重定向到一个完全空白的页面
问题-我如何告诉验证拦截器表单将重定向到何处,以便填写值并正确设置字段错误?如果不知道您的配置,很难判断出哪里出了问题 我猜您只是为您的操作配置了验证拦截器 例如: 这里只调用验证拦截器,而不调用其他拦截器,如工作流
// this is better
<action name="doSomething" class="DoSomethingAction">
<interceptor-ref name="defaultStack">
</interceptor-ref>
</action>
如果不知道您的配置,很难判断出哪里出了问题 我猜您只是为您的操作配置了验证拦截器 例如: 这里只调用验证拦截器,而不调用其他拦截器,如工作流
// this is better
<action name="doSomething" class="DoSomethingAction">
<interceptor-ref name="defaultStack">
</interceptor-ref>
</action>