我有一种情况,我希望只在某些条件下显示一个primefaces'对话框,所以我做的是设置visible属性。现在我想知道,当visible设置为false时,是否可以在渲染的html中隐藏组件?让我们说有人会更聪明地使用我的应用程序,他将决定显示页面的源代码,然后他会注意到我隐藏的对话框,然后他将删除我的“可见”属性。发生的事情是,虽然它不应该显示,但是会向他显示对话框。当然,我可以用这样的方式编写我的方法,即使他显示对话框,他也无法做错任何事,但我更愿意从渲染的html中删除我的对话框。有可能吗?
答案 0 :(得分:2)
使用rendered
属性并将其设置为false
。
<h:panelGroup layout="block" id="enclosing-panel">
<p:dialog header="Basic Dialog" widgetVar="dlg1" minHeight="40" rendered="#{somecController.dialogRendered}">
<h:outputText value="Resistance to PrimeFaces is futile!" />
</p:dialog>
</h:panelGroup>
每当你需要对话框时,使用ajax刷新包围对话框的div(<h:panelGroup/>
)。
<p:commandButton value="show dialog" type="button" oncomplete="PF('dlg1').show();" actionListener="#{somecController.refreshPanel}" update="enclosing-panel" />