将参数传递到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)