8

このフォームを処理したい (valueChangeListener は実際には有効ではありません)。

これはバック Bean です。

public class TestBean extends PrivateBaseBean implements Serializable {
private List<String> strings;

@PostConstruct
public void init() {
    strings = new ArrayList<String>();
    strings.add("");
    strings.add("");
    strings.add("");
}

public void saveAction(ActionEvent event) {

    StringBuilder textToShowInMessage = new StringBuilder();
    for (String string : strings) {
        textToShowInMessage.append(string);
        textToShowInMessage.append("; ");
    }
    FacesMessage msg = new FacesMessage(super.getBundle().getString(
            textToShowInMessage.toString()), "");

    FacesContext.getCurrentInstance().addMessage(null, msg);
}

getters... setters...

ビュー:

....
<h:form>
<ui:repeat var="string" value="#{testBean.strings}">
    <h:inputText value="#{string}" />
    <br />
</ui:repeat>
<p:commandButton value="#{msg.save}"
actionListener="#{testBean.saveAction}" icon="ui-icon-disk"
        update="@form" />
</h:form>
...

フォームがバック Bean ストリング リストで処理されると、常に空白になります。

値変更リスナーなしで、フォーム入力の内部反復を処理する方法は?

いくつかのスクリーンショットがあります: コードをデバッグする

ブラウザのフォーム

action または actionListener を on にすると、同じ問題が発生します。

4

2 に答える 2