Java 在使用重定向操作时,是否有一种方法可以获取操作类中的属性值,而不将它们作为查询字符串参数提供?

Java 在使用重定向操作时,是否有一种方法可以获取操作类中的属性值,而不将它们作为查询字符串参数提供?,java,struts2,query-string,querystringparameter,Java,Struts2,Query String,Querystringparameter,当POST请求成功时,请求被重定向如下 private String message; //Getter and setter. //Required validators. @Action(value = "AddUpadteCategory", results = { @Result(name=ActionSupport.SUCCESS, type="redirectAction", params={"namespace", "/admin_side", "acti

POST
请求成功时,请求被重定向如下

private String message; //Getter and setter.

//Required validators.
@Action(value = "AddUpadteCategory",
    results = {
        @Result(name=ActionSupport.SUCCESS, type="redirectAction", params={"namespace", "/admin_side", "actionName", "Category", "currentPage", "${currentPage}", "message", "${message}", "status", "${status}"}),
        @Result(name = ActionSupport.INPUT, location = "Category.jsp")},
    interceptorRefs={
        @InterceptorRef(value="defaultStack", params={"params.acceptParamNames", "catId, catName, currentPage, rowCount, totalPages, status", "validation.validateAnnotatedMethodOnly", "true"})
    })
public String insertOrUpdate()
{
    if(true)  //Some conditional check.
    {
         setMessage(getText("message.key.true"));
    }
    else
    {
          setMessage(getText("message.key.false"));
    }

    return ActionSupport.SUCCESS;
}
如果未发生验证/转换错误,则此消息将作为查询字符串参数提供

有时,此消息可能很长,形成一个长URL字符串

在使用重定向操作时,有没有一种方法可以在不作为查询字符串参数传递的情况下获取此消息


无法将此消息存储到会话中。

使用
存储侦听器
,并将其
操作模式
参数设置为
自动
,如下所示:


自动的
它会自动将您的邮件设置在适当的范围内。对于
redirectAction
result,它将是会话范围,但在显示您的消息后,此拦截器将自动删除它们

编辑(注释语法):


关于注释,它似乎需要类级别的配置。另外,请注意:是否可以只存储我们通过
addActionMessage()
addActionError()
方法显式添加的消息(或者是否可以删除特定消息)?(在我的例子中,我总是有一条贯穿整个应用程序的错误消息。该消息是关于一个需要作为隐藏字段传递的安全令牌,但我没有该字段的setter/getter,因为它们不需要。隐藏字段直接传递给安全框架-Spring而不是Struts)..这总是会留下一条非常不必要的消息,比如带有值“xxx”的
错误设置表达式“\u csrf”
,除了我自己的消息之外,我在JSP页面上使用
时总是会得到这条消息。(当然,如果
struts.devMode
设置为false,则此消息不会出现,但需要一直打开,直到开发完成),使用
params
interceptor并在
excludeparms
参数中设置此令牌字段的名称。通过
excludeparms
排除此参数无效,因为该参数在相应的操作类中没有相应的mutator和accessor,因为它们不是必需的。(为什么我们不必要地为action类中不使用的参数设置setter和getter?)。
 interceptorRefs={
        @InterceptorRef(value="store", params={"operationMode", "AUTOMATIC"}),
        @InterceptorRef(value="defaultStack", params={"params.acceptParamNames", "catId, catName, currentPage, rowCount, totalPages, status", "validation.validateAnnotatedMethodOnly", "true"})
    })