私の JSF 2.0 アプリケーションのページは、特定の学校 (データベース操作) からの教師の数を (teacherIds の形式で) dataTable に取り込みます。各行に対して、整数値 (intValue) と文字列値 (strValue) の 2 つのプロパティを割り当てる必要があります。ページをデータベースに保存するために送信すると、teachList のすべての教師に対して同じ strValue と intValue が保存されます。たぶん、データテーブルの使い方がわからないので、「http://www.primefaces.org/showcase/ui/datatableRowEditing.jsf」に従っています。誰かが他の代替案や修正を提案できますか? 私のコードを以下に貼り付けます。ありがとう!
豆
@ManagedBean(name="myBean")
@SessionScoped
public class MyBean implements Serializable{
private Integer indId;
private Integer teacherId;
private Integer schoolId;
private String strValue;
private Integer intValue;
private List<Teacher> teacherList;
private List<Att> tList;
public myBean(){
tList = new ArrayList<Att>();
// Some database operations to load the att.xhtml page
indId = findId();
teacherList = teacherDataProvider(schoolId);
}
public void attEntry(){
for (int i = 0;i<teacherList.size();i++){
tList.add(new Att(this.teacherList.get(i).getTeacherId(),
this.indId,
this.strValue,
this.intValue,
);
dataProvider.addAtt(tList.get(i)); // call for database archival from the DAO
}
}
// getters & setters
}
att.xhtml
<h:dataTable id="teachers" class="table table-condensed"
value="#{myBean.teacherList}" var="t">
<h:column>
<f:facet name="header">
<h:outputText value="Teacher Id" />
</f:facet>
<h:outputText value="#{t.teacherId}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Att" />
</f:facet>
<h:inputText value="#{myBean.intValue}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Comments" />
</f:facet>
<h:inputTextarea value="#{myBean.strValue}" />
</h:column>
</h:dataTable>
<div>
<h:commandButton action="#{myBean.attEntry}" value="Submit" />
</div>