0

ここでまた JSF の問題を抱えています。今回はリッチフェイス (4.2.1 final、JSF 2) に関するものです。私は eytended DataTable を持っていて、新しい項目を追加したいと考えています。オブジェクトのリストがありJourney、すべての属性にはゲッターとセッターがあります。テーブルは適切に作成されています (リストには既にいくつかの項目があります)。次に、[新しいアイテムを追加] ボタンをクリックします。

<a4j:commandButton ajax="true" value="Neue Fahrt hinzufügen" 
   actionListener="'{editorBean.prepareCreateJourney}" render="createJourneyPopupForm"  
   oncomplete="#{rich:component('createJourneyPopup')}.show()" />

editorBean はSessionScopedJourneyで、メソッドは適切に呼び出され、呼び出された の新しいオブジェクトを作成しますcurrentJourney。ポップアップが表示され、入力を挿入できるはずです。

<rich:popupPanel id="createJourneyPopup" modal="true">
    <h:panelGrid id="createJourneyPopupForm" columns="3">
        <h:outputLabel for="currentId" value="ID" />
        <h:inputText id="currentId"
            value="#{editorBean.currentJourney.journeyNumber}" />
        <rich:message for="currentId" />
        [...and more...]
    </h:panelGrid>

    <a4j:commandButton value="Save"
      execute="currentId currentTrainType operator">
        <f:ajax event="click" listener="#{editorBean.doCreateJourney}"
            render=":vmsEditorForm:resultTable" />
        <rich:componentControl target="createJourneyPopup" operation="hide" />
    </a4j:commandButton>
    <a4j:commandButton value="Abbrechen"
        onclick="#{rich:component('createJourneyPopup')}.hide();" />
</rich:popupPanel>

ボタンをクリックすると、メソッドdoCreateJourneyが呼び出されますが、currentJourney空です。Journey作成後のデフォルトのオブジェクトです。セッターが呼び出されませんでした。入力フィールドでヒントを実行してください。

名前を 2 回確認しました。すべての必要なオブジェクトのゲッターとセッターがあります。範囲を変更しようとしましたが、効果はありません。オブジェクトは同じです。私が作成した準備メソッドJourney(id=151)と保存メソッドではまだJourney(id=151)です。

ここで何が起こっているのですか?データ オブジェクトを作成および編集するためのダイアログを作成するのは、これほど難しいことではありません。ご清聴ありがとうございました。

4

1 に答える 1

1

データを正しく送信するには、入力とコマンド ボタンの両方をフォームにラップする必要があります。

<rich:popupPanel id="createJourneyPopup" modal="true">
    <h:form>
        ... the content of your popupPanel
    </h:form>
</rich:popupPanel>

よろしく、

于 2012-05-08T18:00:14.020 に答える