【问题标题】:I cannot update the datatable in another form我无法以其他形式更新数据表
【发布时间】:2012-11-23 09:06:12
【问题描述】:

我无法以其他形式更新datatable

javax.servlet.ServletException: Cannot find component with identifier "searchForm:dataTableId" referenced from "criteriaForm:j_idt13".
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
    com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
    com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
    org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

我创建了两个表单,但无法更新 bean。 我正在使用;

<h:form id="criteriaForm">
        <p:panel>
            <h:panelGrid columns="3" cellpadding="2">
                <h:panelGrid columns="3" cellpadding="2">
                    <h:outputText value=start"></h:outputText>
                    <p:calendar required="false" id="date1"
                        value="#{searchBean.date1}">
                        <f:convertDateTime locale="en" pattern="dd/MM/yyyy" />
                    </p:calendar>
                </h:panelGrid>
                <h:panelGrid columns="3" cellpadding="2">
                    <h:outputText value="end"></h:outputText>
                    <p:calendar locale="en" required="false" id="date2"
                        value="#{searchBean.date2}">
                        <f:convertDateTime locale="en" pattern="dd/MM/yyyy" />
                    </p:calendar>
                </h:panelGrid>
                <p:commandButton icon="ui-icon-search" value="Search" type="submit"
                    actionListener="#{searchBean.commit()}"
                    style="width:110px;" update="searchForm:dataTableId"></p:commandButton>
            </h:panelGrid>
        </p:panel>
    </h:form>
    <br />
    <h:form id="searchForm">
        <p:dataTable var="item" id="dataTableId" widgetVar="dataTableWidget"
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowIndexVar="index" value="#{searchBean.lazyModel}"
            lazy="true" paginator="true" resizableColumns="false" rows="15">
            <p:column headerText="TEST">
                <h:outputText value="#{item.customerName}"></h:outputText>
            </p:column>
            <p:column headerText="TEST">
                <h:outputText value="#{item.customerCode}"></h:outputText>
            </p:column>
            <p:column headerText="TEST">
                <h:outputText value="#{item.customerPhone}"></h:outputText>
            </p:column>
        </p:dataTable>
    </h:form>

我从页面来源复制了“searchForm:dataTableId

【问题讨论】:

    标签: ajax jsf primefaces


    【解决方案1】:

    您需要在绝对客户端 ID 前面加上命名容器分隔符,在您的情况下为 :。所以,你应该改用update=":searchForm:dataTableId"

    <p:commandButton icon="ui-icon-search" value="Search" type="submit"
        actionListener="#{searchBean.commit()}"
        style="width:110px;" update=":searchForm:dataTableId">
    </p:commandButton>
    

    否则将相对于当前命名容器组件进行搜索,即第一个&lt;h:form&gt;本身。

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多