Modifica di ArrayList di oggetti con tag form di struts 2

Ho 2 lezioni – Student e Course . Entrambi hanno getter e setter definiti sugli attributi al loro interno. Utilizzando queste due classi sto cercando di creare un’applicazione web con funzioni generali come la modifica e l’aggiunta di studenti in diverse pagine jsp. Lo studente avrebbe potuto iscriversi a più corsi e marchi per ogni corso di ogni studente dovrebbe essere modificabile all’interno dell’applicazione.

Ora ho uno studentMarks.jsp che carica i dati da una class di azione – StudentAction

 public class StudentAction extends ActionSupport { private static final long serialVersionUID = 1L; private List studentList; private List courseList; private HashMap<Student,List> studentCourseList; private int rollNo; private String name; private String DOB; StudentService studentService; CourseService courseService; Student student; Course course; /**** Setters and getters for all the attributes here **/ public String studentCourseList() { this.studentList = studentService.getStudentRecords(); studentCourseList = new HashMap<Student, List>(); for(Student s : studentList) { this.studentCourseList.put(s,courseService.getStudentCourses(s.getRollNo())); } return "SUCCESS"; } public String editCoursePage() { this.student = studentService.getStudent(rollNo); this.courseList = courseService.getStudentCourses(rollNo); return "SUCCESS"; //loads the editCourse.jsp } public String editCourseAction() { System.out.print("This line displays null pointer exception" + courseList.size()); //courseService.editCourse(rollNo,this.courseList); return "SUCCESS"; } } 

Prima viene caricata una pagina che esegue l’ azione studentCourseList che popola la pagina con tutti i record (questa pagina funziona bene) e dopo ogni record c’è un pulsante di modifica. Facendo clic su modifica, viene chiamata editCoursePage che imposta un object studente e ottiene un elenco di corsi per questo studente. Si prega di notare che non sto riutilizzando la lista dei corsi dalla hashmap. In questa pagina i segni dello studente vengono visualizzati con i segni all’interno delle caselle di testo per consentire la modifica. Questa pagina mostra informazioni appropriate sugli studenti.

editCourse.jsp

       Edit courses   Student:    Courses:    

Course.java

     @Entity @Table(name="courses") public class Course { @Id @GeneratedValue @Column(name="id") int id; @Column(name="marks") int marks; @Column(name="rollNo") int rollNo; @Column(name="course") String course; //all getters and setters } 

    Ora questo modulo sta visualizzando i dati corretti, ma il problema è che al momento dell’invio, non passa i valori dei corsi a editCourseAction . Ho già provato tutte le specie di espressioni OGNL che possono compilare un elenco tramite il modulo ma non riescono a farlo. È sempre tramite NPE se cerco di ottenere il valore di courseList in action class. Sebbene non invii il rollNo correttamente. Per favore dimmi cosa sto sbagliando. È il problema della syntax o l’approccio è sbagliato?

    Se si desidera inviare nuovamente all’azione un elenco di oggetti è necessario specificare un indice nell’attributo del name :

    invece di

        

    uso