我在開發中使用JSF 2.0,tomahawk和一些f:ajax
的東西。我正在嘗試對我的JSF應用程序做一些魔術字。當你點擊這個單詞時,它會變成另一個單詞,再次單擊它會再次更改它。爲了更清楚,這裏是一個場景。顯示XX的原始單詞,點擊XX時,XX將變爲YY。當點擊YY時,會改回到XX。你有沒有感受到魔法? :P如何刷新JSF h:panelGroup?
這就是我的做法。我創建了2 h:panelGroup
。其中將包含一個XX字,另一個將包含YY的話,像這樣:
<h:panelGroup id="Panel_X">
<h:outputText value="XX" />
</h:panelGroup>
<h:panelGroup id="Panel_Y">
<h:outputText value="YY" />
</h:panelGroup>
爲了讓點擊,我使用commandLink。從上面的代碼修改,併成爲這個:
<h:panelGroup id="Panel_X" rendered="#{magicBean.show_X == true}">
<h:commandLink action="#{myBean.doFunc}">
<f:ajax event="action" render="Panel_Y"/>
<h:outputText value="XX" />
</h:commandLink>
</h:panelGroup>
<h:panelGroup id="Panel_Y" rendered="#{magicBean.show_X == false}">
<h:commandLink action="#{myBean.doFunc}">
<f:ajax event="action" render="Panel_X"/>
<h:outputText value="YY" />
</h:commandLink>
</h:panelGroup>
下面是支持bean:
@ManagedBean(name = "magicBean")
@SessionScoped
public class MagicWordBean {
public boolean show_X = true;
/** getter and setter of show_X **/
public String doFunc() {
showX = !showX;
return "";
}
}
我不知道我是否做正確,但有一點我肯定這是行不通的。最初當頁面加載時,它顯示XX字。當點擊XX字時,YY字不顯示,並且XX字保留在那裏。
任何線索?
相關:http://stackoverflow.com/questions/9010734/why-do-i-need-to-nest-a-component-with-渲染,一些功能於另一組分-W – BalusC