0

我目前正在将一个 webapp 从 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()但即使从浏览器控制台调用该函数,它也不会切换就地编辑。

4

1 回答 1

0

找到了我的问题的原因。我一直在使用@balusc 在这篇文章中提供的 jsf 修复:h:commandButton/h:commandLink 在第一次点击时不起作用,只在第二次点击时起作用

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

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

于 2013-10-28T12:32:43.703 回答