我的 JSF 2.0 应用程序中的一个页面使用来自特定学校(数据库操作)的教师数量(以教师 ID 的形式)填充数据表。针对每一行,我需要分配两个属性,一个整数值 (intValue) 和一个字符串值 (strValue)。当我提交页面以将其保存到数据库时,我最终为teacherList 中的所有教师保存了相同的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>