1

.xhtmlファイルに次のコードがあります

<h:form id="registration3Form">
<h:panelGroup id="terms_outer_panel">
   <h:commandLink styleClass="item-7" 
                    action="#{registerBusinessWizardController.addCourse}" 
                    value="#{msgBundle['registerThirdPage.panel.addSchedule']}">
   </h:commandLink>
   <ui:repeat value="#{registerBusinessWizardController.courses}" var="course">      
                    <h:panelGroup id="terms_inner_panel">
                        <div class="term">

                            <h:inputText id="price" styleClass="item-2" value="#{course.price}" />

                            <h:inputText  id="dateFrom" styleClass="date" value="#{course.date}" >
                                <f:convertDateTime  pattern="yy-MM-dd" type="date" dateStyle="long"/>
                            </h:inputText>

                            <h:inputTextarea value="#{course.additionalInfo}"/>

                            <p class="more">
                                <h:commandLink 
                                    value="#{msgBundle['registerThirdPage.panel.deleteSchedule']}" 
                                    actionListener="#{registerBusinessWizardController.removeCourse}">
                                    <f:ajax render=":registration3Form:terms_outer_panel" execute="terms_inner_panel"/>
                                </h:commandLink>

                            </p>
                        </div>
                    </h:panelGroup>
        </ui:repeat>
    //some other stuff
</h:panelGroup>
</h:form>

そして、ページがレンダリングされるとき。そして、ユーザーがaddScheduleリンクをクリックすると、次の理由により、uirepeatが入力にバインドされた空の値を持つ新しいdivclass="term"を追加することを期待しています。

public void addCourse(){
    Course course = new Course();
    courses.add(course);
}

ui:repeatで使用されるリストに、価格がnullのadditionalInfoと日付の新しいCourseオブジェクトを追加しています。

代わりに私は新しくなります

<div class="term"> 

前のエントリからコピーされた値を持つ部分。

リストから要素を削除すると(managedBeanでは、リストから適切なオブジェクトが削除されます)、削除されたばかりのオブジェクトからのデータが表示されます:/

誰かがこの種の問題に遭遇しましたか?何かアドバイスはありますか?

4

1 に答える 1

4

これは別の<ui:repeat>バグのようです。Mojarra<ui:repeat>には問題が多すぎます。最初のステップは、コンポーネントを完全に価値のUIDataあるコンポーネント ( <h:dataTable>. それが機能する場合、それは間違いなく のバグです<ui:repeat>。それ以外の場合は、独自のコードの単なるバグです (与えられたコードに基づいて、何も表示されませんが、Bean は であると想定します@ViewScoped)。

それが実際に<ui:repeat>それ自体が原因である場合、最初のステップは通常、最新の Mojarra バージョンにアップグレードすることです。これは現在、サーブレット 2.5 コンテナーの場合は 2.0.6、サーブレット 3.0 コンテナーの場合は 2.1.4 です。それでも問題が解決しない場合は、Mojarra を別のより優れた実装を持つMyFaces<ui:repeat>に置き換えることを検討する必要があります。何らかの理由でそれができない場合は、UIDataトマホーク <t:dataList>.

于 2011-12-12T12:28:23.720 に答える