Need all functionality in one screen/form (check box , dynamic rows , user
inputs , validation) & all using dynaform.
Here is the code.
--------------------------------------------------------------------------------------
* Dynaform
<form-bean name="adjustmentForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="employees" type=""java.util.ArrayList"" />
</form-bean>
This form is in request scope.
* Not yet reach to validation configuration (using validation.xml)
--------------------------------------------------------------------------------------
* Action class
java.util.ArrayList empoyeebeans = getDataPopulatebean() // get data in
list. get data & populate below bean
dynaForm.set("employees",empoyeebeans);
--------------------------------------------------------------------------------------
Here is bean (
public class EmployeeBean {
public String getEmpid() {
return empid;
}
public void setEmpid(String empid) {
this.empid = empid;
}
public String getEmployeename() {
return employeename;
}
public void setEmployeename(String employeename) {
this.employeename = employeename;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getPremium() {
return premium;
}
public void setPremium(String premium) {
this.premium = premium;
}
public String getTier() {
return tier;
}
public void setTier(String tier) {
this.tier = tier;
}
private String empid;
private String employeename;
private String premium;
private String date;
private String tier;
}
-----------------------------------------------------------------------------------------------
JSP code
<logic:iterate id="employee" name="adjustmentForm" property="employees"
indexId="count">
<bean:define id="remainder"
value="<%=Integer.toString(count.intValue() % 2) %>"/>
<tr>
<td> <html:checkbox name="employee" property = "empid"
value="<%=((EmployeeBean)ebs.get(count.intValue())).getSsn()%>"
indexed="true"/></td>
<td>Employee SSN</td>
<td><bean:write name="employee" property = "empid" /> </td>
</tr>
<tr>
<td> </td>
<td>Employee Name</th>
<td><bean:write name="employee" property = "employeename"
/> <html:hidden name="employee" property = "employeename" indexed="true"/>
</td>
</tr>
<tr>
<td > </td>
<td >Tier</th>
<td ><bean:write name="employee" property = "tier" />
<html:hidden name="employee" property = "tier" indexed="true"/></td>
</tr>
<tr>
<td> </td>
<td>Premium</th>
<td><bean:write name="employee" property = "premium" />
<html:hidden name="employee" property = "premium" indexed="true"/> </td>
</tr>
<tr >
<td > </td>
<td >Reason</td>
<td><select id="reason" name="reason"> <option
value=""></option></select></td>
</tr>
<tr>
<td> </td>
<td>Termination Date</td>
<td><html:text name="employee" property = "date"
indexed="true" /> <html:hidden name="employee" property = "date"
indexed="true"/></td>
</tr>
</logic:iterate>
-----------------------------------------------------------------------------------------------
HTML code
<tr>
<td> <input type="checkbox" name="employee[0].empid"
value="7464264327" checked="checked"></td>
<td>Employee SSN</td>
<td>7464264327 </td>
</tr>
<tr>
<td> </td>
<td>Employee Name</th>
<td>BARKSDALE,JACK <input type="hidden"
name="employee[0].employeename" value="BARKSDALE,JACK"> </td>
</tr>
<tr>
<td > </td>
<td >Tier</th>
<td >ES <input type="hidden" name="employee[0].tier"
value="ES"></td>
</tr>
<tr>
<td> </td>
<td>Premium</th>
<td>150.00 <input type="hidden" name="employee[0].premium"
value="150.00"> </td>
</tr>
<tr >
<td > </td>
<td >Reason</td>
<td><select id="reason" name="reason"> <option
value=""></option></select></td> // This is still under construction
</tr>
<tr>
<td> </td>
<td>Termination Date</td>
<td><input type="text" name="employee[0].date" value="">
<input type="hidden" name="employee[0].date" value=""></td>
</tr>
<tr>
<td> <input type="checkbox" name="employee[1].empid"
value="7464264324" checked="checked"></td>
<td>Employee SSN</td>
<td>7464264324 </td>
</tr>
<tr>
<td> </td>
<td>Employee Name</th>
<td>ARBOR,ROBERT B <input type="hidden"
name="employee[1].employeename" value="ARBOR,ROBERT B"> </td>
</tr>
<tr>
<td > </td>
<td >Tier</th>
<td >EMP <input type="hidden" name="employee[1].tier"
value="EMP"></td>
</tr>
<tr>
<td> </td>
<td>Premium</th>
<td>100.00 <input type="hidden" name="employee[1].premium"
value="100.00"> </td>
</tr>
<tr >
<td > </td>
<td >Reason</td>
<td><select id="reason" name="reason"> <option
value=""></option></select></td>
</tr>
<tr>
<td> </td>
<td>Termination Date</td>
<td><input type="text" name="employee[1].date" value="">
<input type="hidden" name="employee[1].date" value=""></td>
</tr>
------------------------------------------------------------------------------------------------
Here is the issue >>> when I click on submit >> bean is not get populated >>>
as bean not get populated, I can write validation code in validation.xml
& require bean get populated with selected check box plus corresponding row
also means corresponding employee name , tier , premium & user input date &
reason
------------------------------------------------------------------------------------------------
I thought that Struts framework will do this for me.
To overcome this I wrote below code in Action class which get call once clicked
on submit.
Calling below method to populate bean & validation from Action class
public void validateForm(DynaValidatorForm dyna, HttpServletRequest request) {
int size = ((java.lang.Integer) dyna.get("size")).intValue();
ArrayList ebs = new ArrayList();
for (int i = 0; i < size; i++) {
if (request.getParameter("employee[" + i + "].ssn") != null) {
com.edocs.application.hbmgrp.appflow.adjustments.EmployeeBean
eb = new com.edocs.application.hbmgrp.appflow.adjustments.EmployeeBean();
eb.setDate(request.getParameter("employee[" + i + "].date"));
eb.setEmployeename(request.getParameter("employee[" + i +
"].employeename"));
eb.setPremium(request.getParameter("employee[" + i +
"].premium"));
eb.setSsn(request.getParameter("employee[" + i + "].ssn"));
eb.setTier(request.getParameter("employee[" + i + "].tier"));
ebs.add(eb);
}
}
dyna.set("employees", ebs);
}
----------------------------------------------------------------------------------------------------
By doing above thing will solve my issue, but I am missing many things here
(this is very bad).
What I am missing?
* Validation by configuration ( in validation.xml)
* Populating form by hand.
* Above points are related to each other (for validation form require to
populate before execute method).
Please suggest me steps to solve above issues?
----------------------------------------------------------------------------------------------------
---------------------------------
Do you Yahoo!?
Yahoo! Mail - Find what you need with new enhanced search. Learn more.