将参数传递到struts2中的结果不起作用

将参数传递到struts2中的结果不起作用,struts2,Struts2,我将结果配置如下:它是我的自定义结果类型 <result-types> <result-type name="myBytesResult" class="blahblah.MyBytesResult" /> </result-types> <action name="myAction" class="blahblah.MyAction"> <result name="success" type="myBytesResult

我将结果配置如下:它是我的自定义结果类型

<result-types>
    <result-type name="myBytesResult" class="blahblah.MyBytesResult" />
</result-types>


<action name="myAction" class="blahblah.MyAction">
    <result name="success" type="myBytesResult">
       <param name="pptId">${pptId}</param>
    </result>
</action>
MyBytesResult

private String contentType;

private String pptId;


public void execute(ActionInvocation invocation) throws Exception {
    HttpServletResponse response = ServletActionContext.getResponse();
         //...Some more code for settign response
    System.out.println("pt Id[" + this.pptId + "]");

}


public String getContentType() {
    return contentType;
}


public void setContentType(String contentType) {
    this.contentType = contentType;
}


public String getPptId() {
    return pptId;
}


public void setPptId(String pptId) {
    this.pptId = pptId;
}
最新答案

所以,经过一些挖掘,这似乎是实际工作正常。如果有必要,结果负责将传入数据作为OGNL表达式进行评估。这就是重定向和http头结果的工作方式。您可以根据自定义结果中的堆栈分析值,如下所示:

String resolvedPptId = TextParseUtil.translateVariables(pptId, stack)
从可翻译变量的Javadoc:

将表达式中${…}和%{…}的所有实例转换为调用{@link ValueStackfindValuejava.lang.String}返回的值。如果一个项目不能 返回null,则不返回整个变量${…} 显示,就像该项位于堆栈上但返回空字符串一样


请提供MyBytesResult和MyAction的代码。操作和结果${pptId}的更新代码无效。getPptId也没有被调用。我在那里添加了日志。我做了一些测试并修改了我的答案。没问题。我和你的印象一样,所以我们在这里都学到了一些东西。
String resolvedPptId = TextParseUtil.translateVariables(pptId, stack)