如何在数据库中保存多个h:inputText值DATATABLE

时间:2013-05-13 11:41:08

标签: java jsf primefaces

在网页中,我使用<h:dataTable>来展示它们。

JSF页面示例:

<h:dataTable value="#{bean.scores}" rowIndexvar="index">
    <h:column>
      <h:outputText value="#{index+1}" />
    </h:column>
    <h:column>
      <h:outputText value="#{score.studentId}" />
    </h:column>
    <h:column>
       <h:inputText value="#{score.teacherScore}" />
    </h:column>
</h:dataTable>

<h:commandButton value="Save" action="#{useMB.save}" />
<h:messages />

问题与我的ManagedBean有关: useMB.java

1.我需要写什么getter和setter方法才能写入商店  数据库中的<h:inputText value="#{score.marks}" />值?

2.如何使用dataTable,JSF和java在同一主题的数据库中保存不同的学生分数?

3. xhtml 页面需要做哪些更改?

1 个答案:

答案 0 :(得分:1)

您需要在托管bean中使用一个集合来保存表中行的值。表中的每一行都代表集合中的一个元素,dataTable中的每个元素都可以通过var属性中给出的别名来访问。

<h:dataTable value="#{bean.scores}" rowIndexvar="index" var="score">
    <h:column>
      <h:outputText value="#{index+1}" />
    </h:column>
    <h:column>
      <h:outputText value="#{score.studentId}" />
    </h:column>
    <h:column>
       <h:inputText value="#{score.teacherScore}" />
    </h:column>
</h:dataTable>

在托管bean中,您需要有一个Collection(或Array)元素,每个元素都有名称为studentIdteacherScore的成员以及它们的访问者。

public class ManagedBean {
    private Score[] scores;

    public Score[] getScores() { return scores; }

    public void setScores(Score[] scores) {
        this.scores = scores;
    }
}

Score类应该(至少)看起来像这样:

public class Score {
    private String studentId;

    private String teacherScore;

    public String getStudentId() { return studentId; }

    public void setStudentId(String studentId) { this.studentId = studentId; }

    public String getTearcherScore() { retyrn teacherScore; }

    public void setTeacherScore(String tearcherScore) { this.tearcherScore = tearcherScore; }
}