Как обновить и прочитать значение выбора переключателя (по одному для каждой строки) в объекте Arraylist с помощью struts

Я разрабатываю приложение для регистрации сотрудников, используя struts 1.3. На одной странице jsp в таблице показаны все запросы на регистрацию, включая все сведения об этом конкретном сотруднике по строкам (одна строка для каждого запроса на регистрацию сотрудника). Каждая строка содержит две радиокнопки «утверждено» и «отклонено». Администратор должен выбрать любой из них, либо он может пропустить несколько строк (чтобы сделать его ожидающим). После нажатия кнопки отправки, как читать все значения переключателей одно за другим, чтобы обновить базу данных в соответствии с выбором администратора.

Что я пробовал:

  1. Класс DataAccess.java (Bean для обработки коллекции)

    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. В моем классе ActionForm

    private ArrayList<DataAccess> dataList;
    public void setDataList(ArrayList<DataAccess> dataList) {this.dataList = dataList;}
    public ArrayList<DataAccess> getDataList() {return dataList;}
    
  3. В моем классе Action метод execute(): этот метод отправляет элемент управления на страницу jsp (Pending.jsp), где я отображаю все ожидающие запросы. После этого управление страницей переходит к методу appendUsers(----) того же класса DispatchAction для обновления базы данных.

    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. Код моей страницы Jsp (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>
    

Проблема в том, что если я не ставлю переключатели, данные отображаются правильно. пока я пытаюсь поставить переключатели (для выбора администратором одобрения или отклонения), я получаю эту ошибку:

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

Я также пытался поместить эти геттеры и сеттеры в DataAccess.java(класс Bean для коллекции) и класс AppForm (FormBean), но не повезло.

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

Любая помощь, предложение будут оценены.


person Shailesh Saxena    schedule 07.03.2013    source источник


Ответы (1)


Наконец я решил эту проблему.

Вот несколько советов по решению этой проблемы

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