【问题标题】:Unable to show() via widgetVar on Primefaces 4 p:inplace无法通过 Primefaces 4 p:inplace 上的 widgetVar 显示()
【发布时间】:2013-10-28 11:26:43
【问题描述】:

我目前正在将一个网络应用从 Primefaces 3.5 更新到 4.0。我有一个复合组件,用于通过带有 onclick p:widgetVar('dlg').show() 的链接切换就地编辑。我已将此更新为 Primefaces 4.0 方式PF('dlg').show();,但它不起作用。

代码是这样的:

<p:inplace id="inplaceEdit" widgetVar="ie_#{cc.attrs.pojo.id}"
           editor="true"
           styleClass="description" emptyLabel="Enter A Description" >
    <p:inputText value="#{cc.attrs.pojo.description}"
                 required="true" maxlength="140"
                 label="description" styleClass="description">
        <p:ajax process="@this" listener="#{cc.attrs.bean.update(cc.attrs.pojo)}"/>
    </p:inputText>
</p:inplace>

<h:panelGroup>
    <div class="aap-btn-group">
        <p:commandLink id="pieButton" onclick="PF('ie_#{cc.attrs.pojo.id}').show()">
            <i class="icon icon-edit"></i>
        </p:commandLink>
    </div>
</h:panelGroup>

这会在我的页面上输出一个链接,例如 PF('ie_19').show(),但即使从浏览器控制台调用该函数,它也不会切换就地编辑。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    找到了我的问题的原因。我一直在使用@balusc 在这篇文章中提供的 jsf 修复:h:commandButton/h:commandLink does not work on first click, works only on second click

    脚本会检查if(update.getAttribute("id") == "javax.faces.ViewState"),但由于我已更新到 JSF 2.2,因此该字符串似乎并不是真正的“javax.faces.ViewState”。通过 Chrome 调试器运行它,我看到了 "j_id1:javax.faces.ViewState:0"

    为了解决这个问题,我将脚本的那部分更改为:if(update.getAttribute("id").indexOf("javax.faces.ViewState") !== -1),如果 id 属性字符串包含“javax.faces.ViewState”,则返回 true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多