【问题标题】:Primefaces change element attribute via JavascriptPrimefaces 通过 Javascript 更改元素属性
【发布时间】:2015-09-22 07:47:02
【问题描述】:

我正在开发使用 Primefaces 3.5 的项目(是的,它是一个相当旧的版本)。我想要实现的是 Javascript 中的一个函数,它将改变 Primefaces 元素的属性。有可能吗?

我有一个面板定义为:

<p:panel id="mypanel" widgetVar="mypanelWidget" header="A title here" toggleable="true" toggleOrientation="vertical" collapsed="true">

我的想法是使用 Javascript 将 collapsed="true" 更改为 collapsed="false"

这种必要性激增是因为更新面板的 ajax 调用,当它更新时,它显示为折叠。在回调时使用mypanelWidget.expand() 不是一个好主意,因为我的页面变得非常生动。

【问题讨论】:

    标签: javascript jsf primefaces


    【解决方案1】:

    两种选择:

    1. 只需在collapsed 属性中使用EL 来检查某些模型状态,而不是指定硬编码的true

      <p:panel ... collapsed="#{not bean.ajaxMethodCalled}">
      

      如果感兴趣的 ajax 方法被调用,您可以确保 isAjaxMethodCalled() 返回 true。它不一定需要是布尔属性,它可以是任何东西,包括检查 HTTP 请求参数映射,只要它计算为所需的布尔结果即可。

    2. 在 ajax 调用期间不要更新面板本身。而是更新其内容。

      <p:panel ...>
          <h:panelGroup layout="block" id="panelContents">
              ...
              <p:ajax update="panelContents" />
              ...
          </h:panelGroup>
      </p:panel>
      

      这样,HTML DOM 树中面板的 HTML 表示状态保持不变。

    【讨论】:

    • 就这么简单!谢谢!我走错路了,试图改变mypanelWidget.cfg属性
    • 但是只是好奇,我们不能通过javascript来改变它吗?
    • 有可能。当您基本上接管和复制 JSF 的职责/能力时,它只会变得笨拙。看来您是 JSF 的新手,所以这里有一些值得阅读的内容:stackoverflow.com/questions/4421839/…
    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多