3

我正在尝试为我的应用程序中的答案创建一个输入表单,我从四个“空”答案开始,视图循环并为其创建输入字段。我有一个添加答案按钮,我将一个问题添加到答案数组中,然后视图再次呈现答案,但现在有一个额外的输入字段。支持 bean 是视图范围的。但是,如果我在不按添加答案按钮的情况下提交表单,则一切正常。数据保存在数据库中。但是如果我在四个填写完后添加一个答案,最后一个不会从输入字段(answer.description)中获取数据。如果我先按添加答案(不填写任何输入字段),则根本不会捕获字段中的数据,使所有 5 个为空,因此没有数据保存在数据库中。

我有这个形式:

        <ui:repeat var="answer" value="#{bean.answers}">
            <div class="field">
                <h:outputLabel for="answerAlternative-#{answer.serialNumber}"
                    value="Svaralternativ #{answer.serialNumber}" />
                <h:inputText id="answerAlternative-#{answer.serialNumber}"
                    value="#{answer.description}" size="40" />
            </div>
        </ui:repeat>

这是创建新输入字段的方法:

public String addAnswer() {
    if (answers.size() + 1 < 6) {
        Answer answer = new Answer();
        answer.setSerialNumber(answerSerialNumber + "");
        answerSerialNumber++;
        answers.add(answer);
    }

    return null;
}

用于使用四个空输入字段初始化答案数组:

@PostConstruct
public void initBean() {
    answers = new ArrayList<Answer>();

    for (int i = 0; i < 4; i++) {
        addAnswer();
    }
}
4

1 回答 1

5

<ui:repeat>这看起来与Mojarra当前的问题相匹配。它在 Mojarra完全坏掉了。

你基本上有2个选择:

于 2011-11-26T18:23:01.807 回答