Cara memperbarui dan membaca nilai pilihan tombol radio (satu untuk setiap baris) di objek Arraylist menggunakan struts

Saya sedang mengembangkan beberapa aplikasi pendaftaran karyawan menggunakan struts 1.3. Pada satu halaman jsp, sebuah tabel menunjukkan semua permintaan pendaftaran, termasuk semua rincian karyawan tertentu berdasarkan baris (Satu baris untuk setiap permintaan pendaftaran karyawan). Setiap baris berisi dua tombol radio disetujui dan ditolak. Admin harus memilih salah satu yang bisa dia lewati untuk beberapa baris (untuk membuatnya tertunda). Setelah menekan tombol submit cara membaca semua nilai radio button satu persatu untuk mengupdate database sesuai pilihan admin.

Apa yang saya coba:

  1. Kelas DataAccess.java (Bean untuk menangani koleksi)

    public class DataAccess {
    
        private String regid,fname,lname,email,eid,contact,address,jdate,qualification,designation,adminchoice,imagepath;
        private String reqdate,approvedate,rejectdate,ipaddress;
    
        ArrayList<DataAccess> userList;
    
        //write the public constructors....        
        public DataAccess(){ }
    
        public DataAccess(String regid,String fname, String lname,String email,String eid,String contact,String address,String jdate,String qualification,String designation,String adminchoice,String imagepath,String reqdate,String approvedate,String rejectdate,String ipaddress)
        {
            this.regid=regid;
            this.fname=fname;
            this.lname=lname;
            this.email=email;
            this.eid=eid;
            this.contact=contact;
            this.address=address;
            this.jdate=jdate;
            this.qualification=qualification;
            this.designation=designation;
            this.adminchoice=adminchoice;
            this.imagepath=imagepath;
            this.reqdate=reqdate;
            this.approvedate=approvedate;
            this.rejectdate=rejectdate;
            this.ipaddress=ipaddress;
        }
    
        //Setter and getter methods for all properties...
    
        //for registration id....
        public void setRegid(String regid) { this.regid=regid;}
        public String getRegid(){ return regid;}
    
        // for first name....   
        public void setFname(String fname) { this.fname=fname;}
        public String getFname() { return fname;}
    
        //for last name....
        public void setLname(String lname) { this.lname=lname;}
        public String getLname(){ return lname;}
    
        //for email....
        public void setEmail(String email) { this.email=email;}
        public String getEmail(){ return email;}
    
        //for eid....
        public void setEid(String eid) { this.eid=eid;}
        public String getEid(){ return eid;}
    
        //for contact no....
        public void setContact(String contact) { this.contact=contact;}
        public String getContact() { return contact; }
    
        //for address....
        public void setAddress(String address){ this.address=address;}
        public String getAddress(){ return address;}
    
        //for joining date....
        public void setJdate(String jdate){ this.jdate=jdate;}
        public String getJdate(){ return jdate;}
    
        //for qualification....
        public void setQualification(String qualification) { this.qualification=qualification;}
        public String getQualification(){ return qualification; }
    
        //for experience....
        public void setDesignation(String designation) { this.designation=designation;}
        public String getDesignation() { return designation;}
    
        //for admin choice....
        public void setAdminchoice(String adminchoice){ this.adminchoice=adminchoice;}
        public String getAdminchoice(){ return adminchoice; }
    
        //for image path....
        public void setImagepath(String imagepath){ this.imagepath=imagepath;}
        public String getImagepath(){ return imagepath; }
    
        //for registration request date....
        public void setReqdate(String reqdate) { this.reqdate=reqdate;}
        public String getReqdate(){ return reqdate;}
    
        //for registration approval date....
        public void setApprovedate(String approvedate) { this.approvedate=approvedate;}
        public String getApprovedate(){ return approvedate;}
    
        //for registration rejection date....
        public void setRejectdate(String rejectdate) { this.rejectdate=rejectdate;}
        public String getRejectdate(){ return rejectdate;}
    
        //for ip address....
        public void setIpaddress(String ipaddress) { this.ipaddress=ipaddress;}
        public String getIpaddress(){ return ipaddress;}
    
        public ArrayList<DataAccess> createList()
        {
            userList=new ArrayList<DataAccess>();
            return userList;
        }
    
        public void addData(DataAccess da)
        {
            userList.add(da);
        }
    }
    
  2. Di kelas ActionForm saya

    private ArrayList<DataAccess> dataList;
    public void setDataList(ArrayList<DataAccess> dataList) {this.dataList = dataList;}
    public ArrayList<DataAccess> getDataList() {return dataList;}
    
  3. Di kelas Action saya, jalankan metode(): metode ini mengirimkan kontrol ke halaman jsp (Pending.jsp) tempat saya menampilkan semua permintaan yang tertunda. Setelah kontrol halaman ini masuk ke metode ApprovUsers(----) dari kelas DispatchAction yang sama untuk memperbarui database.

    DataAccess dtacs=new DataAccess();
    ArrayList<DataAccess> userList=dtacs.createList();
    
    do{
        if(rs3.next())
        {
            System.out.println("BBB.");
            jdate_string=new SimpleDateFormat("dd/MMM/YYYY").format(rs2.getDate(7));
            reqdate_string=new SimpleDateFormat("hh:mm:ss a
            dd/MMM/YYYY").format(rs2.getTimestamp(14)); 
    
            userList.add(new DataAccess(rs2.getString(1),rs2.getString(3),rs2.getString(4),
            rs3.getString(1),  rs2.getString(13),rs2.getString(5),rs2.getString(6),jdate_string,
            rs2.getString(8),rs2.getString(9),"no",rs2.getString(12),reqdate_string,"Not Approved",
            "Not Rejected",rs3.getString(2)));
    
            System.out.println(userList.size());
        }//if closing..
    
    } while(rs1.next());
    
    req.setAttribute("data", userList);
    return map.findForward("gopending");
    
  4. Kode halaman Jsp saya (Pending.jsp)

    <logic:iterate id="item" name="data" indexId="idx">
        <tr>
            <td><bean:write name="idx"/></td>
            <td><bean:write name="item" property="regid"/></td>
            <td><bean:write name="item" property="eid"/></td>
            <td><bean:write name="item" property="fname"/></td>
            <td><bean:write name="item" property="lname"/></td>
            <td><bean:write name="item" property="designation"/></td>
            <td><bean:write name="item" property="email"/></td>
            <td><bean:write name="item" property="contact"/></td>
            <td><bean:write name="item" property="address"/></td>
            <td><bean:write name="item" property="qualification"/></td>
            <td><bean:write name="item" property="jdate"/></td>
            <td><bean:write name="item" property="reqdate"/></td>
            <td><bean:write name="item" property="ipaddress"/></td>
            <td><html:radio name="item" property="dataList"  indexed="true" value="approved"/></td>
            <td><html:radio name="item" property="dataList"  indexed="true" value="rejected"/></td> 
        </tr>
    </logic:iterate>
    

Masalahnya adalah, jika saya tidak meletakkan tombol radio, data akan ditampilkan dengan benar. ketika saya mencoba memasang tombol radio (untuk pilihan admin untuk menyetujui atau menolak) saya mendapatkan kesalahan ini:

javax.servlet.jsp.JspException: No getter method available for property dataList for bean under name item

Saya juga mencoba meletakkan pengambil dan penyetel ini di DataAccess.java (kelas Bean untuk koleksi) dan kelas AppForm (FormBean) tetapi tidak berhasil..

public void setItem(int index,DataAccess value){this.dataList.add(index,value);}
public DataAccess getItem(int index){return this.dataList.get(index);}

Bantuan apa pun, saran akan dihargai.


person Shailesh Saxena    schedule 07.03.2013    source sumber


Jawaban (1)


Akhirnya saya memecahkan masalah ini.

Berikut beberapa saran untuk menangani masalah ini

1)Follow the above steps.
2)I did a silly mistake, while taking the radio buttons put property="adminchoice" (in my case).
3) Read the corresponding admin choice in the execute method of Action class where control goes after submitting form.
person Shailesh Saxena    schedule 07.03.2013