2012-05-08 149 views
1

我需要收集班级中学生的作业分数。什么到目前为止,我所做的就是我如何处理JSF中未定义数量的相关inputText

  1. 使用UI获得学生ID
  2. 名单:再说一遍,我环通列表,并为每个学生证,我

    2A)显示H:inputText的其值为当前学生ID,然后

    2b)在上面(2a)的文本框右侧,我显示另一个h:inputText,供老师输入该学生的分数(现在该值是一个虚拟的变量只是为了让页面显示)。

  3. 我有一个单一的命令按钮来提交所有的数据。

例如,如果我有20个学生,我会有20行,其中每行有两个h:inputText,其中一个已经包含当前的student_id,另一个是空的,供老师键入分数。

如何正确收集这些值,以便将正确的学生ID链接到正确的分数。

请注意,我无法硬编码文本字段的数量,因为课程中学生的数量可随时更改。

+0

看看http://stackoverflow.com/a/6743138/617373也看看http://www.primefaces.org/showcase/ui/datatableEditing.jsf;jsessionid=164B58A98A6016F43E86A846B0DB637D – Daniel

+0

感谢丹尼尔。第一个环节实际上对我来说更好,但考虑到我为每个学生准备了2套。我怎样才能使用另一个数组来保持两个同步使用索引。我的意思是我怎样才能确保当我提交按钮,说#myBean.score [0]中的值是为第一个sudent id输入的值。因为我需要识别student_id/score,所以我可以建立一个批量sql插入适当的 – obinini

+0

你可以有一个数组(或arraylist)的对象,每个对象将举行2个字符串例如 – Daniel

回答

2

创建一个模型对象。

public class Score { 

    private Long studentId; 
    private BigDecimal teacherScore; 

    // Getters/setters. 
} 

在某些JSF托管bean中拥有它们的列表。

private List<Score> scores; 

使用<h:dataTable>来呈现它们。

<h:dataTable value="#{bean.scores}" var="score"> 
    <h:column><h:inputText value="#{score.studentId}" /></h:column> 
    <h:column><h:inputText value="#{score.teacherScore}" /></h:column> 
</h:dataTable> 
<h:commandButton value="Save" action="#{bean.save}" /> 
<h:messages /> 

就是这样。

+0

非常感谢你BalusC和丹尼尔。你们是最棒的。你的想法帮助我解决了这个问题。 – obinini