Struts 1.3 を使用して従業員登録アプリケーションを開発しています。1 つの JSP ページに、その特定の従業員のすべての詳細を含むすべての登録要求がテーブルに表示されます (従業員登録要求ごとに 1 行)。各行には、承認済みと拒否の 2 つのラジオ ボタンがあります。管理者は、いくつかの行をスキップできるか (保留にするため) のいずれかを選択する必要があります。送信ボタンを押した後、すべてのラジオ ボタンの値を 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); } }
私の ActionForm クラスで
private ArrayList<DataAccess> dataList; public void setDataList(ArrayList<DataAccess> dataList) {this.dataList = dataList;} public ArrayList<DataAccess> getDataList() {return dataList;}
私の Action クラス execute method(): このメソッドは、保留中のすべての要求を表示している jsp ページ (Pending.jsp) にコントロールを送信します。このページ コントロールの後、同じ DispatchAction クラスの approvalUsers(----) メソッドに移動して、データベースを更新します。
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");
私の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);}
任意のヘルプ、提案をいただければ幸いです。