2012-05-28 15 views
7

値シナリオ(簡体字)で更新されません。一覧<String>に<ui:repeat><h:inputText>を使用すると、モデルがここ

部材及び適切なゲッター/セッターを持つBean(mrBeanそれを呼び出す)があります:

は、
private List<String> rootContext; 

public void addContextItem() { 
    rootContext.add(""); 
} 

JSFコード:エンテであった「追加」ボタン、値をクリックすると

<h:form id="a_form"> 
      <ui:repeat value="#{mrBean.stringList}" var="stringItem"> 
        <h:inputText value="#{stringItem}" /> 
      </ui:repeat> 
      <h:commandButton value="Add" action="#{mrBean.addContextItem}"> 
       <f:ajax render="@form" execute="@form"></f:ajax> 
      </h:commandButton> 
</h:form> 

問題は、ありますstringListの文字列を表す<h:inputText/>の赤は実行されません。

実際には、mrBean.stringListセッター(setStringList(List<String> stringList))は呼び出されません。

理由は何ですか?

いくつかの情報 - 私はStringクラスは不変であり、値のためのセッターを持っていないのTomcat 6で

答えて

20

をMyFacesをJSF 2.0を使用しています。ゲッターは基本的にObject#toString()メソッドです。

代わりにListに値を直接取得または設定する必要があります。あなたは<ui:repeat varStatus>によって利用可能なリストインデックスによってそれを行うことができます。

<ui:repeat value="#{mrBean.stringList}" varStatus="loop"> 
    <h:inputText value="#{mrBean.stringList[loop.index]}" /> 
</ui:repeat> 

stringListのセッターは必要ありません。 ELはList#get(index)で項目を取得し、List#add(index,item)で項目を設定します。

+0

ありがとうございます!問題は値が不変であると思っていましたが、JSFが何らかの形でこれを克服できるかどうかはわかりませんでした。これは本当に感謝しています。 – Ben

+0

ようこそ。 – BalusC

+0

ここで、loop.indexはリストの現在の要素のインデックスを返しますか? – user3663882

関連する問題