切换到管理面板时,我将请求属性设置为显示后退按钮:
public void adminPanel() {
Tools.getRequestContext().setAttribute("show_back_button", true);
}
现在在JSP页面中,我检查这个属性是否存在:
<c:if test="${show_back_button eq true}">
<h:commandButton action="index?faces-redirect=true"
immediate="true"
type="submit"
value="#{msg.back}"
styleClass="btn btn-default admin-button" />
</c:if>
首次进入管理面板后,我看到了后退按钮。但是当点击时,没有触发重定向到index.xhtml,但是admin.xhtml正在刷新。
当我评论并且一切正常时,后退按钮始终可见,但正在工作。
所以我的问题是如果未设置show_back_button
属性会发生什么,我会用EL测试它? JSF阶段已损坏?也许别的什么?我做错了什么?
答案 0 :(得分:0)
看起来我找到了解决方案。 加入
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
简单地解决问题。 ViewState和tag的东西是关键。
感谢http://balusc.omnifaces.org/2011/09/communication-in-jsf-20.html#ViewScopedFailsInTagHandlers帖子。 我必须更深入地研究这个问题......