使用xml文件的Struts2验证失败会导致操作类参数从生成的jsp中消失



我有一个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结果。

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

  1. 在行动中实施可准备的界面
  2. 在你的方法中进行验证
  3. 在要填充的项之前,在jsp中使用s:action来调用填充相关部分的操作

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

最新更新