我有一个a类:
class A extends ActionSupport{
int someId;
// getters/setters
public String execute(){
setSomeId(2);
return SUCCESS;
}
public String save(){
// something
}
}
在struts.xml
中,我配置了一个操作"ViewId
",它将我们带到默认方法execute
,其中设置了someId
。然后,我们进入一个jsp页面show.jsp
,在那里我可以访问someId
值。在show.jsp中,我必须输入一个电子邮件id,然后提交页面。现在在"Save
"中调用的操作,它将我们带到操作类的save方法。但是,我在相应的validation.xml文件A-Save-validation.xml
中进行了一些检查,它将检查输入的电子邮件的格式。问题是,如果xml验证失败,我们将返回show.jsp,但viewId参数现在不可用。为什么会这样?
输入页面应该与以前的用户相似。只有现在已验证的字段才应具有与其关联的错误页。有什么解决办法吗?
正如@Umesh所说,在调用操作的方法之前,验证发生在相应的interecptor上。
当验证失败时,操作的方法永远不会被调用,您将看到INPUT结果。
为了实现你想要的,你有一些选择:
- 在行动中实施可准备的界面
- 在你的方法中进行验证
- 在要填充的项之前,在jsp中使用s:action来调用填充相关部分的操作
1可能是最简单的。我也喜欢选项3。