相关疑难解决方法(0)

如何找到ajax update/render组件的客户端ID?找不到带有"bar"引用的表达式"foo"的组件

下面的代码是从PrimeFaces的DataGrid + DataTable的教程启发和放入<p:tab>一个的<p:tabView>居住在<p:layoutUnit><p:layout>.这是代码的内部部分(从p:tab组件开始); 外部是微不足道的.

<p:tabView id="tabs">
    <p:tab id="search" title="Search">                        
        <h:form id="insTable">
            <p:dataTable id="table" var="lndInstrument" value="#{instrumentBean.instruments}">
                <p:column>
                    <p:commandLink id="select" update="insTable:display" oncomplete="dlg.show()">
                        <f:setPropertyActionListener value="#{lndInstrument}" 
                                        target="#{instrumentBean.selectedInstrument}" />
                        <h:outputText value="#{lndInstrument.name}" />
                    </p:commandLink>                                    
                </p:column>
            </p:dataTable>
            <p:dialog id="dlg" modal="true" widgetVar="dlg">
                <h:panelGrid id="display">
                    <h:outputText value="Name:" />
                    <h:outputText value="#{instrumentBean.selectedInstrument.name}" />
                </h:panelGrid>
            </p:dialog>                            
        </h:form>
    </p:tab>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)

当我单击时<p:commandLink>,代码停止工作并给出消息:

找不到表达式为"insTable:display"的组件,引用自"tabs:insTable:select".

当我尝试相同的使用时<f:ajax>,它失败了,基本上告诉相同的不同消息:

<f:ajax> 包含一个未知的id"insTable:display"无法在组件"tabs:insTable:select"的上下文中找到它

这是怎么造成的,我该如何解决?

ajax jsf clientid primefaces jsf-2

131
推荐指数
3
解决办法
15万
查看次数

如何在primefaces中从javascript触发组件刷新?

是否可以从javascript更新PrimeFaces组件,以便强制刷新?

我正在使用对话框中的此按钮进行ajax保存调用.我已经在oncomplete事件上附加了我的自定义javascript.

<p:growl life="1500" id="showmessage"/>
<p:dialog id="addMemberDialog" widgetVar="addMemberDlg">
    <!-- More Code -->
    <p:commandButton value="Save"
        actionListener="#{memberManagedBean.save}"
        oncomplete="handleSaveNewMember(xhr, status, args)"
        update=":memberListForm:membersTable createupdateform "
        process="@form" />
</p:dialog>
Run Code Online (Sandbox Code Playgroud)

..在保存按钮,我在这里添加一条消息,使用growl组件将其显示给客户端.

public void save(ActionEvent event) {
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
            "Successfuly Add user", "Successfuly Add user");
    FacesContext.getCurrentInstance().addMessage(null, message);

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何对UI进行排序,我应该在growl组件显示meesage之前先隐藏对话框?

function handleSaveNewMember(xhr, status, args) {
    addMemberDlg.hide();
    //update the growl after the dialog was hidden?
}
Run Code Online (Sandbox Code Playgroud)

发生的事情是,growl组件同时显示在对话框旁边.

谢谢.

jsf primefaces jsf-2

27
推荐指数
2
解决办法
8万
查看次数

标签 统计

jsf ×2

jsf-2 ×2

primefaces ×2

ajax ×1

clientid ×1