0

我需要你对 JSF2 的帮助。我制作了一个数据表来列出数据库中的数据项。我想从该列表中选择一个项目并在编辑对话框上打印它。问题是该项目的数据未显示在该对话框中。这是用于生成它的 JSF 代码:

<p:dataTable value="#{airportController.items}" var="item" style="border: 0px;">
    <f:facet name="header">Airports</f:facet>
    <p:column>
        <f:facet name="header">ID</f:facet>
        <h:outputText value="#{item.airportId}"/>
    </p:column>

    <p:column>
        <f:facet name="header"></f:facet>
        <p:commandButton title="View" value="" update=":airportForm:airportEditForm" icon="edit_icon.gif"oncomplete="editAirportDlg.show();">
            <f:setPropertyActionListener value="#{item}" target="#{airportController.selected}"/>
        </p:commandButton>
    </p:column>
    <p:commandButton value="Ajouter" onclick="createAirportDgl.show();"/>    
</p:dataTable>

<p:dialog id="airportEditForm" widgetVar="editAirportDlg" modal="false"  header="Modifier" rendered="true" resizable="false">
    <h:panelGrid id="airportDisplay" columns="2" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"   rowsPerPageTemplate="5,10,15">
        <h:outputText value="Pays"/>
        <p:inputText value="#{airportController.selected.country}"/>
        <h:outputText value="Ville"/>
        <p:inputText value="#{airportController.selected.city}"/>
        <h:outputText value="Nom"/>
        <p:inputText value="#{airportController.selected.name}"/>
        <h:outputText value="Addresse"/>
        <p:inputText value="#{airportController.selected.hqAddress}"/>
        <p:commandButton value="Valider" action="#{airportController.update()}"/>
    </h:panelGrid>
</p:dialog>

所有这些都放在 index.xhtml 页面中。我不知道我做错了什么。

4

3 回答 3

0

尝试将所有内容,即你的datatabledialog里面h:form的 id 然后

在编辑按钮上单击更新关于网格 ID 的对话框,:form:airportDisplay如下所示。

<h:form id="form">

    <p:growl id="growl" showDetail="true" life="3000"/>  


    <p:dataTable value="#{airportController.items}" var="item" style="border: 0px;">
    <f:facet name="header">Airports</f:facet>
    <p:column>
        <f:facet name="header">ID</f:facet>
        <h:outputText value="#{item.airportId}"/>
    </p:column>

    <p:column>
        <f:facet name="header"></f:facet>
        <p:commandButton title="View" value="" update=":form:airportDisplay" icon="edit_icon.gif"oncomplete="editAirportDlg.show();">
            <f:setPropertyActionListener value="#{item}" target="#{airportController.selected}"/>
        </p:commandButton>
    </p:column>
    <p:commandButton value="Ajouter" onclick="createAirportDgl.show();"/>    
</p:dataTable>


    <p:dialog id="airportEditForm" widgetVar="editAirportDlg" modal="false"  header="Modifier" rendered="true" resizable="false">
    <h:panelGrid id="airportDisplay" columns="2" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"   rowsPerPageTemplate="5,10,15">
        <h:outputText value="Pays"/>
        <p:inputText value="#{airportController.selected.country}"/>
        <h:outputText value="Ville"/>
        <p:inputText value="#{airportController.selected.city}"/>
        <h:outputText value="Nom"/>
        <p:inputText value="#{airportController.selected.name}"/>
        <h:outputText value="Addresse"/>
        <p:inputText value="#{airportController.selected.hqAddress}"/>
        <p:commandButton value="Valider" action="#{airportController.update()}"/>
    </h:panelGrid>
</p:dialog>     



        </h:form>
于 2013-05-23T07:29:53.550 回答
0

你能发送整个xhtml内容吗?这可能是一个验证问题。尝试在 commandButton 上使用 process="@this" 并改为更新 airportDisplay。

<p:commandButton title="View" value=""
    update=":airportForm:airportDisplay"
    icon="edit_icon.gif"oncomplete="editAirportDlg.show();" process="@this">
    <f:setPropertyActionListener value="#{item}" target="#{airportController.selected}"/> 
</p:commandButton>
于 2013-05-23T01:23:46.503 回答
0

感谢帮助,这是页面内容,

索引.xhtml

<ui:define name="title">
    Airports
</ui:define>

<ui:define name="header">
    header
</ui:define>

<ui:define name="menu">
    menu
</ui:define>

<ui:define name="content">
    <h:form id="airportForm">
        <ui:include src="list.xhtml"/>
        <ui:include src="edit.xhtml"/>
        <ui:include src="create.xhtml"/>
    </h:form>
</ui:define> </ui:composition>

列表.xhtml

<p:dataTable value="#{airportController.items}" var="item" style="border: 0px;" >paginator="true"
             rowKey="#{item.airportId}" selection="#{airportController.selected}" >selectionMode="single"

sortBy="#{item.airportId}"> 机场 ID Nom Pays Ville Addesse onclick="editAirportDlg.show();"/>

update=":airportForm:airportCreateForm" onclick="createAirportDgl.show();"/>

编辑.xhtml

<p:dialog widgetVar="editAirportDlg" modal="false" 
          header="Modifier" rendered="true" resizable="false">
    <h:form id="airportEditForm">
    <h:panelGrid columns="2">
        <h:outputText value="Pays :"/>
        <p:inputText value="#{airportController.selected.country}"/>
        <h:outputText value="Ville: "/>
        <p:inputText value="#{airportController.selected.city}"/>
        <h:outputText value="Nom: "/>
        <p:inputText value="#{airportController.selected.name}"/>
        <h:outputText value="Addresse: "/>
        <p:inputText value="#{airportController.selected.hqAddress}"/>
        <f:facet name="footer">
            <p:commandButton value="Valider" icon="ui-icon-disk" action=" {airportController.update()}"/>
        </f:facet>
    </h:panelGrid>
    </h:form>
</p:dialog> </ui:composition>
于 2013-05-23T21:28:27.460 回答