2011-06-28 4 views
0

p:commandButtonが3つのp:inputTextフィールドの内容を持つJSF-2.0ダイアログを持っています。押された私はFを使用して試してみました:属性が、そのどちらか、私は「の値」内に配置するか、私は同じような何かをしようとした場合、私はヌル何を得るの正確なテキスト渡しますp:commandButtonが押されたときに、p:inputTextの値をBeanに渡す必要があります。

<h:form id="form"> 
      <p:dataTable var="config" value="#{configBean.configList}" selection="#{configBean.selectedConfigs}"> 
       <p:column selectionMode="multiple">    
        <f:facet name="header"> 
          Delete? 
        </f:facet>      
       </p:column> 



      <p:column headerText="Name"> 
       <h:outputText value="#{config.name}" /> 
      </p:column> 

      <p:column headerText="Key"> 
       <h:outputText value="#{config.key}" /> 
      </p:column> 

      <p:column headerText="Value"> 
       <h:outputText value="#{config.value}" /> 
      </p:column> 
     </p:dataTable> 

     <p:commandButton value="Add Row" 
         oncomplete="addRowDialog.show()"/> 
     <p:commandButton value="Delete" 
         action="#{configBean.deleteSelectedConfigs}"/> 

     <p:dialog header="Add Row" widgetVar="addRowDialog" id="dialog" 
        width="250" height="300" showEffect="explode" hideEffect="explode"> 

      <h:outputLabel for="name2" value="Name:"/> 
      <p:inputText id="name2" name="name2" required="true"/> 

      <p:commandButton value="Submit" actionListener="#{configBean.addNewConfigProperty}" onclick="addRowDialog.hide()" update="config">    
      <f:attribute name="name1" value="#{requestScope.name2}"/> 
      </p:commandButton> 
     </p:dialog>        
    </h:form> 

が発見されたものの値を渡すことが可能ですこの方法でinputTextに?

答えて

2

それはバッキングBeanの値にコンテンツだバインドするp:inputTextvalue属性を使用する:あなたは別のデータ型にするinputTextをバインドしたい場合は

String myTextField; 
// add getter and setter 

<p:inputText id="name2" value="#{myBean.myTextField}" required="true"/> 

そして、あなたの豆でconverterが必要です。

+0

これは私が試みた最初の方法でしたが、@ViewScopedが設定されていても属性を使用しようとしているので、ページのビュー間で値が失われてしまったため、ボタンをクリックするとすべてのデータが表示されますActionEvent – Ryland

+0

@Ryland:別のビューに切り替えると、@ ViewScoped Beanが破棄され、値が失われます(これは予期した動作です)。値を保持したい場合は、@ SessionScopedを使用するか、データベースに格納されている値でViewScoped Beanを事前に埋める必要があります(これが実行している場合)。 –

+0

このページには、「Add Row」コマンドボタンが付いたテーブルが表示されます。このボタンを押すと、情報を入力するp:ダイアログが表示されます。 p:ダイアログには "Submit"ボタンがあり、このボタンはBeanのバッキングメソッドを呼び出します。私が "value ="を実行し、個々のセッターにブレークポイントを設定すると、ヒットしますが、作成された各 "set"コールの間にデータが格納されません(ヌルに戻ります)。だから、私は属性を使用しようとしました。 – Ryland

関連する問題