2012-05-08 183 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