1
作爲練習,我希望有一個菜單欄在用戶登錄之前處於禁用狀態。當他登錄時,我想調用觸發更新的操作。菜單欄是在master.xhtml
模板文件如何更新呼叫模板中的菜單欄
<h:form >
<p:menubar id="masterMenuBar">
<p:menuitem disabled="#{backing.disableMenu}" value="List users" />
</p:menubar>
</h:form>
作爲登錄的一部分,我有一些代碼刷新
public void refreshForm() {
RequestContext context = RequestContext.getCurrentInstance();
context.update("form1");
context.update("masterMenuBar");
}
我想我的運氣與調用上下文更新到我的定義masterMenuBar
標籤形式但RequestContext
顯然不包括我的呼叫模板形式(這聽起來足夠合理)。
是否有一些其他上下文我可以調用哪些將包括上下文更新到我的菜單欄?也許我走錯了路,有更好的方法來實現同樣的目標?
我注意到,即使調整瀏覽器大小也不足以再次調用我的backing.disableMenu
bean。顯然我需要一些相當強大的東西來讓它第二次到達我的豆子。
哎呀,我設法混淆你。有兩種形式,一種在主模板中,另一種在welcome.xhtml文件中。 welecome有一個id =「form1」。然而,如果我採取你的想法,也許我需要做的是context.update(「:masterMenuBar」)。我會嘗試的。 –
如果它在表單內,那也不行。你需要傳遞它的絕對客戶端ID,它將是':form1:masterMenuBar'。檢查生成的HTML輸出以查看它。順便說一下,使用多少個模板/包含並不重要,畢竟只有一個'UIViewRoot'。 – BalusC
感謝您的建議。我一直在嘗試我能想到的所有事情,但我無法讓它多次觸及我的斷點。我想也許它不會使用
,所以我將id =向上移動一行到表單。這沒有任何區別。我嘗試組合使用:masterMenuBar,master:masterMenuBar和:master:masterMenuBar並且沒有任何作用。它仍然只碰到一次斷點。 –