0

richfaces dataTable を実装しようとしています。各行には、richfaces カレンダー、2 つの richfaces オートコンプリート、および 3 つの入力テキストがあります。

別の形式でコマンド ボタンがあります。データ テーブルの特定の行に値を入力すると、次のようになります。

  • 有効な日付が表示されます
  • 2 つのオートコンプリートは、Bean からデータ選択を取得するために正常に動作します
  • 入力テキストに値を入力します

しかし、「Compute」ボタンをクリックすると、テキスト入力のみがバッキング Bean に送り返されます。

これまでのところ、私が思いついたものです(これは私のxhtmlファイルの簡略化されたバージョンです)

<h:body>
    <rich:panel>
                <h:form id="legForm">
                    <rich:dataTable value="#{bean.legsForDisplay}" var="legForDisplay">
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Departure Date (UTC)" />
                            </f:facet>
                            <rich:calendar value="#{legForDisplay.departureTime}"
                                locale="#{bean.locale}" popup="true"
                                datePattern="#{legForDisplay.datePattern}"
                                converter="dateConverter" inputStyle="width:80px">
                                <f:ajax event="change" execute="@this"/>
                            </rich:calendar>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="ETD (HHmm)" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.etd}" style="width : 30px;">
                                <f:ajax event="change" execute="@this"/>
                            </h:inputText>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="ADEP" />
                            </f:facet>
                            <rich:autocomplete mode="cachedAjax" minChars="2"
                                autocompleteMethod="#{bean.autocomplete}"
                                autofill="false" value="#{legForDisplay.adep}">
                                <f:ajax event="change" execute="@this"/>
                            </rich:autocomplete>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="ADES" />
                            </f:facet>
                            <rich:autocomplete mode="cachedAjax" minChars="2"
                                autocompleteMethod="#{bean.autocomplete}"
                                autofill="false" value="#{legForDisplay.ades}">
                                <f:ajax event="change" execute="@this"/>
                            </rich:autocomplete>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Male Pax" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.malePax}">
                                <f:ajax />
                            </h:inputText>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Female Pax" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.femalePax}">
                                <f:ajax />
                            </h:inputText>
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Child Pax" />
                            </f:facet>
                            <h:inputText value="#{legForDisplay.childPax}">
                                <f:ajax />
                            </h:inputText>
                        </rich:column>
                    </rich:dataTable>
                </h:form>
    </rich:panel>
    <rich:panel>
        <h:form>
            <a4j:commandButton value="Compute Mission"
                action="#{bean.doStuff}"
                render="@form">
            </a4j:commandButton>
        </h:form>
    </rich:panel>
</h:body>

カレンダー/オートコンプリート コンポーネントの値をListの対応するlegForDisplay要素に設定するにはどうすればよいですか?legsForDisplay

この件に関する関連するすべての質問を読み込もうとしましたが、この問題の解決策を見つけることができませんでした。これはかなり基本的なようです...

ありがとう

編集 :

リッチ データ テーブル内にダミーの送信ボタンを配置すると、すべてが機能します。このダミー ボタンを押すと、「compute Mission」と値が既に Bean に格納されています。

<a4j:commandButton value="Submit"
    action="#{missionHandler.dummySubmit}" limitRender="true"
    render="legTable">
</a4j:commandButton>

私の懸念は、最初に「ダミーボタン」をクリックせずに、別のパネルにある「Compute Mission」ボタンから別のフォームで送信したいということです。

4

1 に答える 1

0

BIGフォームなしでこれを使用してみてください:

<a4j:commandButton value="Submit" execute="legForm"
   action="#{missionHandler.dummySubmit}" limitRender="true"
  render="legTable">
</a4j:commandButton> 
于 2013-05-16T10:10:10.123 に答える