我会尝试用很少的代码解释我的dubt:
template.xhtml
- 这里我加载一个名为get参数的页面(例如index.xhtml?page = homepage => i load homepage.xhtml)
<h:panelGroup layout="block" id="content">
<c:catch>
<ui:include src="#{selector.page}.xhtml" />
</c:catch>
</h:panelGroup>
homepage.xhtml
- 我自己的主页(如果我已登录则会更改)
<h:panelGroup rendered="#{!login.loggedIn}">
<h:outputLabel styleClass="content_title" value="im not logged" />
</h:panelGroup>
<h:panelGroup rendered="#{login.loggedIn}">
<h:outputLabel styleClass="content_title" value="im logged" />
</h:panelGroup>
ajax call
- 这才是真正的问题;如果我这样打电话:
<f:ajax event="action" execute="param1 param2" render=":content"/>
selector bean
:
package model;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="selector")
@RequestScoped
public class Selector {
@ManagedProperty(value="#{param.page}")
private String page;
public String getPage() {
if(page.compareTo("")==0) {
this.page="homepage";
}
return page;
}
public void setPage(String page) {
this.page=page;
}
}
我将在模板上定义的panelGroup content
上加载新数据。
麻烦的是,当我调用它时,我丢失了page parameter
(先前在选择器bean上设置),我无法重新加载当前页面。
所以,你的诀窍是:
1 - 把豆子放入SessionScoped?
2 - 通过ajax调用get值?
3 - 以其他方式定义我自己的应用程序?
任何建议都将受到赞赏:)
答案 0 :(得分:1)
以相同的形式将其作为隐藏输入值传递给下一个请求。
<h:inputHidden value="#{selector.page}" />