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并且没有任何作用。它仍然只碰到一次断点。 –