Primefaces 通过 Javascript 更改元素属性
Primefaces change element attribute via Javascript
我正在开发使用 Primefaces 3.5 的项目(是的,这是一个很旧的版本)。我想实现的是 Javascript 中的一个函数,它将更改 Primefaces 元素的属性。可以吗?
我的面板定义为:
<p:panel id="mypanel" widgetVar="mypanelWidget" header="A title here" toggleable="true" toggleOrientation="vertical" collapsed="true">
我的想法是将 collapsed="true"
更改为 collapsed="false"
和 Javascript。
由于更新面板的 ajax 调用,这种需求激增,更新后,它显示为折叠状态。在回调中执行 mypanelWidget.expand()
不是一个好主意,因为我的页面变得非常生动。
两个选项:
只需在 collapsed
属性中使用 EL 来检查某些模型状态,而不是指定硬编码 true
.
<p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
如果调用了感兴趣的 ajax 方法,请确保 isAjaxMethodCalled()
returns true
。它不一定需要是布尔值 属性,它可以是任何东西,包括检查 HTTP 请求参数映射,只要它评估为所需的布尔值结果即可。
在 ajax 调用期间不要更新面板本身。相反,更新其内容。
<p:panel ...>
<h:panelGroup layout="block" id="panelContents">
...
<p:ajax update="panelContents" />
...
</h:panelGroup>
</p:panel>
这样 HTML DOM 树中面板的 HTML 表示状态保持不变。
我正在开发使用 Primefaces 3.5 的项目(是的,这是一个很旧的版本)。我想实现的是 Javascript 中的一个函数,它将更改 Primefaces 元素的属性。可以吗?
我的面板定义为:
<p:panel id="mypanel" widgetVar="mypanelWidget" header="A title here" toggleable="true" toggleOrientation="vertical" collapsed="true">
我的想法是将 collapsed="true"
更改为 collapsed="false"
和 Javascript。
由于更新面板的 ajax 调用,这种需求激增,更新后,它显示为折叠状态。在回调中执行 mypanelWidget.expand()
不是一个好主意,因为我的页面变得非常生动。
两个选项:
只需在
collapsed
属性中使用 EL 来检查某些模型状态,而不是指定硬编码true
.<p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
如果调用了感兴趣的 ajax 方法,请确保
isAjaxMethodCalled()
returnstrue
。它不一定需要是布尔值 属性,它可以是任何东西,包括检查 HTTP 请求参数映射,只要它评估为所需的布尔值结果即可。在 ajax 调用期间不要更新面板本身。相反,更新其内容。
<p:panel ...> <h:panelGroup layout="block" id="panelContents"> ... <p:ajax update="panelContents" /> ... </h:panelGroup> </p:panel>
这样 HTML DOM 树中面板的 HTML 表示状态保持不变。