当visible设置为false时,从页面源中删除组件

时间:2015-01-18 13:45:37

标签: jsf jsf-2 primefaces

我有一种情况,我希望只在某些条件下显示一个primefaces'对话框,所以我做的是设置visible属性。现在我想知道,当visible设置为false时,是否可以在渲染的html中隐藏组件?让我们说有人会更聪明地使用我的应用程序,他将决定显示页面的源代码,然后他会注意到我隐藏的对话框,然后他将删除我的“可见”属性。发生的事情是,虽然它不应该显示,但是会向他显示对话框。当然,我可以用这样的方式编写我的方法,即使他显示对话框,他也无法做错任何事,但我更愿意从渲染的html中删除我的对话框。有可能吗?

1 个答案:

答案 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" />