我有具有类似于下面的代码的Liferay JSF 2.0的portlet:电话ActionResponse.setRenderParam被忽略/无效
private String userId
private String organization
private String registrationToken
...
public String submitLogin() {
ActionResponse actionResponse = (ActionResponse) PortletUtil.getExternalContext().getResponse();
actionResponse.setRenderParameter("userId", this.userId);
actionResponse.setRenderParameter("org", this.organization);
if (StringUtils.hasText(this.registrationToken))
actionResponse.setRenderParameter("token", this.registrationToken);
...
}
所有私有成员变量被映射到输入表单字段和具有相应的吸气剂和制定者。
如果我在Eclipse的调试器中跟踪这段代码,并检查ActionResponse实例的_publicRenderParameters HashMap的内容,我发现userId和org params已经设置好了。在接下来的几行中,我看到registrationToken具有正确提交的隐藏输入值,并且正在进行最后的setRenderParameter()调用。
这是Bizarro World部分:在最后一次setRenderParameter()调用之后,ActionResponse中的_publicRenderParameters HashMap绝对没有更新,并且令牌固执地保持在params中未设置。
我试过多种方式,使其工作,从传送令牌经过我们用于持有其他PARAMS一个会话范围豆;稍后在代码流中调用setRenderParameter()(仍然使用相同的ActionResponse引用);在呼叫中使用不同的密钥名称(“registrationToken”),以防万一“标记”是某种保留名称或某种内容。没有任何东西获得最后一次实际更新地图的呼叫。
我也用谷歌搜索相关的方面,我能想到的每一个组合,但还没有找到这样的具体问题任何事情。
有没有其他人遇到这个问题?为什么ActionResponse的param地图在前两次调用中会更新,但不是最后一次调用。
=乔=