我使用struts2框架动态获取记录。 例如。 ExamId 1有6个科目。 ExamId 2有8个科目。 ExamId 3有2个科目。 等等 但问题是我没有getSubject1()setSubject1()..... getSubjectN()setSubjectN()
[EDITED] 现在的问题是我应该如何用setter和getters来恢复它。我正在使用JQuery Jtable 参考:http://www.simplecodestuffs.com/crud-operations-in-struts-2-using-jtable-jquery-plugin-via-ajax/
我的Bean课程
@Entity
public class SubjectBean
{
@Id
@GeneratedValue
private int SubjectId;
private String paperCode;
int totalNumber;
@OneToMany(cascade=CascadeType.ALL)
private Collection<Subject> subjectList;
private int examId;
//setters and getters of all
}
主题类
@Entity
public class Subject
{
@Id
@GeneratedValue
private int Id;
private String subjectId;
private int capacity;
//setters and getters
}
动作类。
class CrudAction
{
public String insert() throws IOException
{
String examid =(String) httpSession.getAttribute("examId");
Integer examId =Integer.parseInt(examid);
Map<String, String[]> requestParams = request.getParameterMap();
//inserting data using hibernate
return "success";
}
punlic String getAll()
{
// how can i access?
}
}
答案 0 :(得分:0)
你忽视了Struts2和OGNL的基本原理。这是the XY problem的完美案例。
你需要的唯一东西是getter和Collection / List的setter,它们显然必须在类级别而不是方法级别声明,或者在方法执行结束后被销毁。因为在你的情况下,Collection / List在另一个对象中,那么该对象必须在类级别声明,并且你也需要getter / setter:
class CrudAction {
private SubjectBean sb;
// getter and setter
在IteratorStatus对象的帮助下,使用List命令并使用 []符号和点符号在页面中指定它
<s:iterator value="sb.subjectList" status="ctr">
<s:property value="sb.subjectList[%{#ctr.index}].id" />
<s:hidden name="sb.subjectList[%{#ctr.index}].id" />
<s:textfield name="sb.subjectList[%{#ctr.index}].subjectId" />
<s:textfield name="sb.subjectList[%{#ctr.index}].capacity" type="number" />
</s:iterator>