在没有getter的情况下动态获取记录

时间:2015-01-12 03:39:55

标签: java hibernate java-ee struts2 jquery-jtable

我使用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?
  }
}

1 个答案:

答案 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>