-->

如何使用支柱在ArrayList对象更新和(每行一个)读单选按钮的选择值(How to update

2019-10-17 19:29发布

我正在开发用struts 1.3中某些雇员注册申请。 在一个jsp页面显示一个表,所有的登记请求,包括该特定雇员逐行(每个雇员登记请求中的一行)的所有细节。 每一行包含两个单选按钮批准和拒绝。 管理员有权选择任何一个无论是他能跳过几行(为使其待定)。 按提交按钮如何读取所有单选按钮后的值逐一根据管理员的选择更新数据库。

我的尝试:

  1. DataAccess.java类(豆用于处理集合)

     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)。 在此之后页面控制转到approveUsers(----)相同的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> 

问题是,如果我不把它正确显示数据单选按钮。 当我试图把单选按钮(用于管理选择approv的或拒绝)我得到这个错误:

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

我也试图把这些getter和setter在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);}

任何帮助,建议将不胜感激。

Answer 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.


文章来源: How to update and read radio button choice value(one for each row) in Arraylist object using struts