3

文字列のリストを保持する Bean を持つ JSF 2.0 アプリケーションがあります。

から文字列をリストに追加し<h:inputText>/>て、リストを表示したいと考えています。

次のコードは、リストに参照を追加するだけです。したがって、リストのすべての要素は最後の入力に設定されます。

@ManagedBean
@ApplicationScoped
public class Bean {

private String name;
private ArrayList<String> test = new ArrayList<String>();

public Bean() {
}

public Bean(String name) {
    this.name = name;
}


public String addtoList(String _name){
    test.add(_name);
    return "./index.xhtml";
} 


/***************GETTER/SETTER/HASHCODE/EQUALS**************************/
   ...

}

ここに私のindex.xhtmlの一部:

        <h:inputText id="name"
                         value="#{bean.name}"
                         required="true">
        </h:inputText>
        <h:commandButton value="Post"  
                         action="#{bean.addtoList(name)}"/>  
        <br/>
        <h:dataTable var="bean"
                     value="#{bean.test}">
            <h:column>
                <h:outputText value="#{bean.name}"/>
            </h:column>

        </h:dataTable>

アプリケーション例

4

2 に答える 2

3

これを試して:

public String addtoList() { // no parameter
    test.add(this.name); // add value of bean's property
    return "./index.xhtml";
}

そしてフェイスレットで:

<h:commandButton
    value="Post"
    action="#{bean.addtoList}"/> <!-- no parameter passed -->

ポイントは、addToListパラメーターなしのメソッドを使用することです。リストに追加する文字列nameは、バッキング Bean のプロパティの値である必要があります。

また、データテーブルではvar、バッキング Bean と同じ名前を付けないでください。紛らわしく、バグにつながる可能性があります。次のようなものを使用します。

<h:dataTable
    var="it"
    value="#{bean.test}">
    <h:column>
        <h:outputText value="#{it}" />
    </h:column>
</h:dataTable>
于 2012-11-28T17:06:12.750 に答える
0
<h:dataTable var="beany"
                         value="#{bean.test}">
                <h:column>
                    <h:outputText value="#{beany}"/>
                </h:column>

</h:dataTable>

問題は、それvar="bean"が私のクラスの同じ名前であるbean ということでしたvar

于 2012-11-28T17:45:39.207 に答える