You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Ke <js...@gmail.com> on 2008/01/07 10:52:46 UTC
Problem with Populating collection in struts 2 Action
Hi, all,
I have the problem to populate collection from Struts 2 Action. I followed
the previous post from:
http://www.nabble.com/Populating-collection-in-struts-2-Action-properties-td8784718.html#a8784718
But it still does not work, I post my method here, any help will be
appreciated.
In my domain model:
public class Timesheet extends BaseObject {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER,
mappedBy = "timesheet")
private Set<Workday> workdays = new HashSet<Workday>();
.......
}
public class Workday extends BaseObject {
@ManyToOne
@JoinColumn(name = "timesheetId", updatable = false, insertable =
false)
private Timesheet timesheet;
......
}
The JSP:
<s:textfield name="timesheet.startDate" theme="simple"
id="timesheet.startDate"
cssClass="text medium" />
<s:iterator value="%{new int[14]}" status="stat">
<s:textfield theme="simple"
id="%{'timesheet.workdays['+#stat.index+'].date'}"
name="%{'timesheet.workdays['+#stat.index+'].date'}" disabled="true"
size="10" maxlength="10"/>
</s:iterator>
.......................
the generated html:
<input id="timesheet.workdays[5].date" type="text" disabled="disabled"
value="" maxlength="10" size="10" name="timesheet.workdays[5].date"/>
The TimesheetAction:
public class TimesheetAction extends BaseAction {
private static final long serialVersionUID = 3449265559398237913L;
private TimesheetManager timesheetManager;
private List<Timesheet> timesheets;
private Timesheet timesheet;
private Long id;
public void setId(Long id) {
this.id = id;
}
public Timesheet getTimesheet() {
return timesheet;
}
public void setTimesheet(Timesheet timesheet) {
this.timesheet = timesheet;
}
public List<Timesheet> getTimesheets() {
return timesheets;
}
public void setTimesheets(List<Timesheet> timesheets) {
this.timesheets = timesheets;
}
public void setTimesheetManager(TimesheetManager timesheetManager) {
this.timesheetManager = timesheetManager;
}
public String delete() {
timesheetManager.remove(timesheet.getId());
saveMessage("job deleted");
return SUCCESS;
}
public String edit() {
if (id != null) {
timesheet = timesheetManager.get(id);
} else {
timesheet = new Timesheet();
}
return SUCCESS;
}
public String save() throws Exception {
if (cancel != null) {
return "cancel";
}
if (delete != null) {
return delete();
}
SecurityContext securityContext =
SecurityContextHolder.getContext();
User user = (User)
securityContext.getAuthentication().getPrincipal();
System.out.println(timesheet.getStartDate());
System.out.println(timesheet.getJobId());
System.out.println(timesheet.getApprover().getId());
System.out.println("--------" +
timesheet.getWorkdays().size());
System.out.println("--------" + user);
timesheet.setSubmitter(user);
timesheet.setApprover(user.getSupervisor());
timesheet.setSubmitDate(DateUtil.getToday().getTime());
timesheet.setStatus("1");
boolean isNew = (timesheet.getId() == null);
timesheet = timesheetManager.save(timesheet);
String key = (isNew) ? "timesheet added" : "timesheet
updated";
saveMessage(key);
if (!isNew) {
return INPUT;
} else {
return SUCCESS;
}
}
public String list() {
timesheets = timesheetManager.getAll();
return SUCCESS;
}
}
Since annotation is used in the domain class, I think the properties file
is not necessary. But I still provide one, placed in the same folder with
Timesheet.class.
Timesheet-conversion.properties:
CreateIfNull_workdays=true
Element_workdays=com.absorbx.ctm.model.Workday
In my Action, the size of workdays is 0, you can see from my log file:
1
-2
--------0
--------com.absorbx.ctm.model.User@18e439a[username=user,enabled=true,accountExpired=false,credentialsExpired=false,accountLocked=false,Granted
Authorities: ,ROLE_USER]
Sorry for the mess code, is there any step I missed?
Best regards,
Ke CAI
--
View this message in context: http://www.nabble.com/Problem-with-Populating-collection-in-struts-2-Action-tp14661680p14661680.html
Sent from the Struts - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org