【问题标题】:How to update a panel outside a datable table in a tab from a commandbutton如何从命令按钮更新选项卡中可数据表之外的面板
【发布时间】:2017-11-17 06:22:15
【问题描述】:

请在更新面板的数据表中有一个命令按钮。我得到 org.primefaces.expression.ComponentNotFoundException:当我单击命令按钮时找不到表达式组件。

<p:tab title="Register Vendor" id="tabtab">

    <p:panel id="ven">

        <h:panelGrid columns="6">
            <p:outputLabel value="Vendor Name: " for="vname"/>
            <p:inputText id="vname" required="true" value="#{bank.vendor_name}" />
            <p:message for="vname"/>

            <p:outputLabel value="Vendor Bank: " for="bank"/>
            <p:selectOneMenu id="bank" value="#{bank.bankmode.bankName}" required="true" requiredMessage="Bank required">

                <f:selectItem itemLabel="--Select Bank--" itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{bank.bankmodel}"
                               var="singlevalue"  
                               itemLabel="#{singlevalue.bankName}"
                               itemValue="#{singlevalue.bankName}"/>
            </p:selectOneMenu>


            <p:message for="bank"/>

            <p:outputLabel value="Vendor Account Number: " for="anum"/>
            <p:inputText id="anum" required="true" value="#{bank.vendor_acct}" requiredMessage="Account Number required" />
            <p:message for="anum"/>

            <p:outputLabel value="Vendor Contact Address: " for="adress"/>
            <p:inputTextarea id="adress" required="true" value="#{bank.vendor_address}" requiredMessage="Contact Address required" />
            <p:message for="adress"/>

            <p:outputLabel value="Vendor Email Address: " for="email"/>
            <p:inputText id="email" required="true" label="email" size="40"
                         requiredMessage="Please enter your email address."
                         validatorMessage="Invalid email format"
                         value="#{bank.vendor_email}">

                <f:validateRegex
                    pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />

            </p:inputText>
            <p:message for="email" />

            <p:outputLabel value="Vendor Phone Number " for="pnum"/>
            <p:inputText id="pnum" required="true" value="#{bank.vendor_phone}" requiredMessage="Phone number required" />
            <p:message for="pnum"/>

            <p:commandButton value="save" process="@this vname,bank,anum,adress,email,pnum" update="singleTB,:templateForm:growl,ven" actionListener="#{bank.insertData}" />

        </h:panelGrid>




        <p:outputPanel style="margin-left: 800px;">
            <h:outputText value="Search all fields:" />
            <p:inputText id="globalFilter" style="width:150px; margin-right: 10px;" placeholder="Enter keyword" />
            <p:commandButton value="Search"/>
        </p:outputPanel>
    </p:panel>
    <p:panel id="singleTB">

        <p:dataTable var="ven_tab"
                     selectionMode="true"
                     rowKey="#{ven_tab.id}"
                     value="#{bank.vendorList}"                                         
                     paginatorTemplate="{CurrentPageReport}  
                     {FirstPageLink} {PreviousPageLink} 
                     {PageLinks} {NextPageLink} {LastPageLink} "
                     paginator="true" style="margin-bottom:20px"
                     rowsPerPageTemplate="5,10,15">
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Vendor Id"/>
                </f:facet>

                <h:outputText value="#{ven_tab.vendorId}"/>

            </p:column>

            <p:column>

                <f:facet name="header">
                    <h:outputText value="Vendor Name"/>
                </f:facet>
                <p:cellEditor>
                    <f:facet name="output"><h:outputText value="#{ven_tab.vendorName}"/></f:facet>
                    <f:facet name="input"><p:inputText value="#{ven_tab.vendorName}"  required="true"  requiredMessage="Name is required" style="width:96%"/></f:facet>
                </p:cellEditor>


            </p:column>

            <p:column>

                <f:facet name="header">
                    <h:outputText value="Vendor Phone Number"/>
                </f:facet>
                <h:outputText value="#{ven_tab.vendorPnum}"/>
            </p:column>

            <p:column>

                <f:facet name="header">
                    <h:outputText value="Vendor Email"/>
                </f:facet>
                <h:outputText value="#{ven_tab.vendorEmail}"/>

            </p:column>
            <p:column>

                <f:facet name="header">
                    <h:outputText value="Vendor Contact Address"/>
                </f:facet>
                <h:outputText value="#{ven_tab.vendorContact}"/>
            </p:column>
            <p:column>

                <f:facet name="header">
                    <h:outputText value="Vendor Bank"/>
                </f:facet>
                <h:outputText value="#{ven_tab.vendorBank}"/>
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Vendor Account Number"/>
                </f:facet>
                <h:outputText value="#{ven_tab.vendorAcct}"/>        
            </p:column>
            <p:column style="width:32px" exportable="false">
                <f:facet name="header">Action</f:facet>
                <p:commandButton icon="ui-icon-edit" style="margin-left: -5px;" process="@this" update=":tabtab:ven,:templateForm:growl" actionListener="#{bank.select(ven_tab)}" />

            </p:column>


        </p:dataTable> 
        <p:contextMenu for="singleTB" rendered="#{bank.status}" >
            <p:menuitem value="Delete" process="@this singleTB" update=":templateForm:growl,singleTB" icon="ui-icon-close" actionListener="#{bank.deleteCar}"/>
        </p:contextMenu>
        <p:panel style="margin-top:-50px; float: right;">
            <h3>Export table Data Only</h3>

            <h:commandLink immediate="true">
                <p:graphicImage value="/images/excel.png" />
                <p:dataExporter type="xls" target="singleTB " fileName="report" pageOnly="true"/>
            </h:commandLink>

            <h:commandLink immediate="true">
                <p:graphicImage value="/images/pdf.png" />
                <p:dataExporter type="pdf" target="singleTB" fileName="report" pageOnly="true" />
            </h:commandLink>

            <h:commandLink immediate="true">
                <p:graphicImage value="/images/csv.png" />
                <p:dataExporter type="csv" target="singleTB" fileName="report" pageOnly="true" />
            </h:commandLink>

            <h:commandLink immediate="true">
                <p:graphicImage value="/images/xml.png" />
                <p:dataExporter type="xml" target="singleTB" fileName="report" pageOnly="true" />
            </h:commandLink>
        </p:panel>

    </p:panel>


</p:tab>

我有一个包含表单的母版页。请问我该如何解决这个问题。我已经有一段时间了

【问题讨论】:

  • 至少您应该提及您正在谈论的命令按钮和表格,因为您添加的代码有多个命令按钮/表格。还要添加完整的错误消息。
  • 我指定的数据表中只有一个命令按钮,我发送的代码中只有一个数据表
  • 你试过只用ven吗?

标签: java jsf primefaces


【解决方案1】:

即使创作者投票反对我。解决办法是:

<p:tabView id="tabview">
            <p:tab title="Register Vendor" id="tabtab">

                <h:form id="tabForm">
                    <p:panel id="ven">
                    </p:panel>
                    <p:panel id="singleTB">

.....

<p:commandButton value="button" id="buttonInTable"
                                    icon="ui-icon-edit" style="margin-left: -5px;"
                                    update=":mainForm:tabview:tabForm:ven " />

【讨论】:

  • tabtab 是标签组件ID,在第一行代码中。
  • 在 Ahmet Emre Kilinc 编辑之前,您发布的第一行是不可见的。根据您的错误帖子对愿意帮助您的人投反对票并不是很有帮助
  • 我编辑我的答案。但是被否决后,我没心情详细解释
  • 我真的很抱歉。我认为这是错误的。我刚刚注意到了。
猜你喜欢
  • 2014-06-18
  • 2019-05-21
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2019-03-27
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多