2013-02-28 3 views
1

Привет, мне нужно создать панель гармоник с данными, расположенными внутри tab1, но я собираю следующую ошибку :: javax.Servlet.ServletException: не может найти компонент с идентификатором «: form: display», может ли кто-нибудь помочь мне решить эту ошибку, используя simplefaces.i, нужно работать без использования виджетов.javax.Servlet.ServletException: не удается найти компонент с идентификатором «: form: display»

View.xhtml

<h:form prependId="false" id="form"> 

<p:dataTable id="dataTable" var="car" value="#{tableBean.getList()}" 
      paginator="true" rows="10" selectionMode="single" selection="#{tableBean.selectedCar}" rowKey="#{car.model}" 
      paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
      rowsPerPageTemplate="5,10,15"> 
    <f:facet name="header"> 
     Posted Jobs 
    </f:facet> 

    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="Model" /> 
     </f:facet> 
     <h:outputText value="#{car.model}" /> 
    </p:column> 

    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="Year" /> 
     </f:facet> 
     <h:outputText value="#{car.year}" /> 
    </p:column> 

    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="Manufacturer" /> 
     </f:facet> 
     <h:outputText value="#{car.manufacturer}" /> 
    </p:column> 

    <p:column> 
     <f:facet name="header"> 
      <h:outputText value="Color" /> 
     </f:facet> 
     <h:outputText value="#{car.color}" /> 
    </p:column> 
     <f:facet name="footer"> 
     <p:commandButton id="viewButton" value="View" icon="ui-icon-search" 
       update=":form:display" oncomplete="carDialog.show()" actionListener="#{tableBean.add}" 
       /> 
    </f:facet> 

</p:dataTable> 
<p:dialog id="dialog" header="Car Detail" widgetVar="carDialog" resizable="false" 
      width="200" showEffect="clip" hideEffect="fold"> 

    <h:panelGrid id="display" columns="2" cellpadding="4"> 



     <h:outputText value="Model:" /> 
     <h:outputText value="#{tableBean.selectedCar.model}" /> 

     <h:outputText value="Year:" /> 
     <h:outputText value="#{tableBean.selectedCar.year}" /> 

     <h:outputText value="Manufacturer:" /> 
     <h:outputText value="#{tableBean.selectedCar.manufacturer}" /> 

     <h:outputText value="Color:" /> 
     <h:outputText value="#{tableBean.selectedCar.color}" /> 
    </h:panelGrid> 
</p:dialog> 

    </h:form> 

AccordionPanel.xhtml

<h:head> 
    <title>Accordion Panel</title> 
</h:head> 
<h:body> 

    <h:form> 
     <p:accordionPanel> 
<p:tab id="DataTable1" title="DataTable 1"> 
<ui:include src="view.xhtml" /> 
    </p:tab> 
    <p:tab id="DataTable2" title="DataTable2"> 
</p:tab> 
</p:accordionPanel> 
    </h:form> 

</h:body> 
</html> 
+0

Вы можете переместить 'dialog' вне формы и попробуйте использовать' update =: display'? –

+0

hi view.xhtml будет работать нормально, но получить ошибку javax.faces.FacesException - Не удается найти компонент с идентификатором «: display» во время работы AccordionPanel – Vidya

ответ

3

Вы получаете эту ошибку, потому что цель обновления вашего CommandButton не может быть найдена с помощью указанной ссылки компонента на отображаемый html.

<p:commandButton id="viewButton" value="View" icon="ui-icon-search" 
update=":form:display" oncomplete="carDialog.show()" actionListener="#tableBean.add}"/> 

Попробуйте удалить update=":form:display" так, что ваша страница может сделать, проверить сгенерированный компонент идентификатор дисплея panelGrid с Firebug и использовать этот идентификатор в вашей цели обновления.

Так как ссылки на компоненты перформанса 3.1 согласованы с JSF Spec. Смотрите эту ссылку для получения дополнительной информации UI Component findComponent()

+0

, если я удалил update = ": form: display", он не даст выбранное содержимое строки в в диалоговом окне отображаются только значения заголовков в диалоговом окне – Vidya

+0

, и вы временно удалите его, чтобы узнать, что означает идентификатор компонента вашей панели (тот, который вы хотите обновить), а затем замените: form: display with the. –

1

обновления вашего (обновление = «: форма: дисплей») атрибут CommandButton к этому:

обновления = «: Форма: диалог: дисплей»

+0

привет, я тоже попробовал это, если я это сделаю, это приведет к следующей ошибке: java.lang.IllegalArgumentException - диалог промежуточного идентификатора в диалоговом окне поиска: отображение идентифицирует UIComponent, который не является NamingContainer – Vidya

Смежные вопросы