2012-01-24 9 views
1

PrimeFaces websiteに表示されている機能を実装しようとしています。私のp:dataTableのヘッダーにあるp:commandButtonは、一連のラベル/テキスト出力を含むp:ダイアログを表示します。 exepectedような作品以下の例:DataTableのh:inputTextレンダリングブランク

<h:form id="form"> 
     <p:dataTable id="table" 
        value="#{locationStockList.getDataModel(cc.attrs.collection)}"  
        var="item" 
        selection="#{locationStockList.selected}" 
        selectionMode="single"> 

      <p:ajax event="rowSelect" listener="#{locationStockList.onRowSelect}"/> 

      <f:facet name="header"> 
       <p:commandButton id="btnView" value="View" 
           update=":form:panel" 
           oncomplete="dialog.show()"/> 
      </f:facet> 
      <p:column> 
       <f:facet name="header">Stock Item</f:facet> 
       <h:outputText value="#{item.stockItem.name}"/> 
      </p:column> 
      <p:column> 
       <f:facet name="header">Location</f:facet> 
       <h:outputText value="#{item.location.name}"/> 
      </p:column> 
      <p:column> 
       <f:facet name="header">Quantity</f:facet> 
       <h:outputText value="#{item.quantity}"/> 
      </p:column> 
      <p:column> 
       <f:facet name="header">Price</f:facet> 
       <h:outputText value="#{item.price}"/> 
      </p:column> 
     </p:dataTable> 

ダイアログ

 <p:dialog id="dialog" widgetVar="dialog" header="Location Stock Form" width="700" 
        resizable="false" draggable="false" closable="false" modal="true"> 
      <h:panelGrid id="panel" columns="3"> 
       <h:outputLabel id="lblStockItem" for="stockItem" value="Stock Item"/> 
       <h:outputText id="stockItem" value="#{locationStockList.selected.stockItem.name}"/> 
       <p:message id="msgStockItem" for="stockItem"/> 

       <h:outputLabel id="lblLocation" for="location" value="Location"/> 
       <h:outputText id="location" value="#{locationStockList.selected.location.name}"/> 
       <p:message id="msgLocation" for="location"/> 

       <h:outputLabel id="lblPrice" for="price" value="Price"/> 
       <h:outputText id="price" value="#{locationStockList.selected.price}"/> 
       <p:message id="msgPrice" for="price"/> 

       <h:outputLabel id="lblQuantity" for="quantity" value="Quantity"/> 
       <h:outputText id="quantity" value="#{locationStockList.selected.quantity}"/> 
       <p:message id="msgQuantity" for="quantity"/> 
      </h:panelGrid> 

      <f:facet name="footer"> 
       <p:commandButton value="Save" /> 
       <p:commandButton value="Cancel" oncomplete="dialog.hide()" /> 
      </f:facet> 
     </p:dialog> 
    </h:form> 

私が経験しています問題は、私が編集/更新パネルと同じダイアログボックスを実装しようとすると、 。 p:ダイアログのh:outputTextをh:inputTextに変更すると、テキストボックスが空にレンダリングされます。私がこの問題に遭遇した唯一の解決策は、h:inputTextをdisabled = "true"またはreadonly = "true"に設定することです。値は表示可能だが編集不可能です。具体的には:

これらの両方の値を示すが、modificaion許可していません。これは空のレンダリングながら

<h:outputText id="price" value="#{locationStockList.selected.price}"/> 
<h:inputText id="price" value="#{locationStockList.selected.price}" readonly="true"/> 

を:テーブルとダイアログの両方として

<h:inputText id="price" value="#{locationStockList.selected.price}"/> 

答えて

2

同じ内にありますフォームでは、テーブルのボタンをクリックすると実際にダイアログのコンテンツも送信されます。あなたが見ているのは、実際にダイアログの提出された値です。 readonlyまたはdisabledが設定されている場合、入力値はサブミットされないため、モデル値はオーバーライドされません。

あなたはボタンがテーブルと2つの形態

<h:form> 
    <p:dataTable> 
     ... 
    </p:dataTable> 
</h:form> 
<p:dialog> 
    <h:form> 
     ... 
    </h:form> 
</p:dialog> 
以上のダイアログを分割する(すなわちのみ @this

<p:commandButton value="View" process="@this" update=":form:dialog" oncomplete="dialog.show()"/> 

またはを処理しなければならないものの中に、より具体的にはいずれかが必要

関連する問題