0

我有一个 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将我们带到动作类的保存方法。但是,我在相应的 validation.xml 文件中进行了一些检查A-Save-validation.xml,它将检查输入的电子邮件的格式。问题是,如果 xml 验证失败,我们将返回 show.jsp,但 viewId 参数现在不可用。为什么会这样?

输入页面应该与之前的用户相似。只有现在验证的字段应该有一个与之关联的错误页面。有什么解决方法吗?

4

1 回答 1

1

就像@Umesh 所说,在调用动作的方法之前,验证发生在相应的拦截器上。

当验证失败时,该操作的方法永远不会被调用,您将被带到 INPUT 结果。

为了实现你想要的,你有一些选择:

  1. 在您的操作中实现可准备的接口
  2. 在您的方法中执行验证。
  3. 在要填充的项目之前在 jsp 中使用 s:action 来调用填充相关部分的操作

1可能是最简单的。我也喜欢选项3。

于 2012-08-04T16:09:29.810 回答