我的Action类中有一个对象,里面包含一个对象的arraylist,我正在尝试为这个对象创建一个CRUD屏幕。我的Action类和bean在下面给出,
/**
* @author rohit
*
*/
public class IRFeedMgmtAction extends ActionSupport implements ModelDriven<IRFeeds>,SessionAware,ServletRequestAware {
private static org.apache.log4j.Logger log = Logger.getLogger(IRFeedMgmtAction.class);
private HttpServletRequest request;
private Map session;
private IRAccountsDAO acctsDAO;
private IRFeeds feed = new IRFeeds();
/* (non-Javadoc)
* @see com.opensymphony.xwork2.ActionSupport#execute()
*/
public String execute()
{
return "success";
}
/**
* @return
*/
public String add()
{
IRUser user = (IRUser) session.get("user");
List<IRAccountUsers> twtUsers = acctsDAO.getTwitterAcctByOrgId(user.getOrgId());
feed.setTwtAccts(prepareTwitterAccounts(twtUsers));
return "addFeed";
}
/**
* @return
*/
public String save()
{
IRFeeds fd = getFeed();
ArrayList<IRFeedAccts> twtAccts = fd.getTwtAccts();
System.err.println(fd.getFeedUrl());
for (Iterator iterator = twtAccts.iterator(); iterator.hasNext();)
{
IRFeedAccts irFeedAccts = (IRFeedAccts) iterator.next();
System.err.println(irFeedAccts.getNumber());
}
return "saved";
}
/**
* @return
*
*/
private ArrayList<IRFeedAccts> prepareTwitterAccounts(List<IRAccountUsers> twtUsers)
{
ArrayList<IRFeedAccts> twtAccts = new ArrayList<IRFeedAccts>();
IRAccountUsers twtUser = null;
IRFeedAccts feedAccnt = null;
for (Iterator iterator = twtUsers.iterator(); iterator.hasNext();)
{
twtUser = (IRAccountUsers) iterator.next();
feedAccnt = new IRFeedAccts();
feedAccnt.setAccountId(twtUser.getSocialId());
feedAccnt.setPic(twtUser.getPic());
feedAccnt.setName(twtUser.getTwtUsrName());
feedAccnt.setNumber(30);
twtAccts.add(feedAccnt);
}
return twtAccts;
}
MY BEAN
public class IRFeeds implements java.io.Serializable {
private Integer feedId;
private Integer campId;
private String feedUrl;
private boolean active;
private Date createdOn;
private Date updatedOn;
private String createdBy;
private ArrayList<IRFeedAccts> twtAccts;
private ArrayList<IRFeedAccts> fbAccts;
private ArrayList<IRFeedAccts> fbPages;
我的JSP文件
<s:iterator value="#session.fd.twtAccts" status="twtAcct">
<tr>
<td>
<div style="width: 48px; float: left;"><img src="<s:property value="pic" />" /></div>
<div style="text-align: left;"><s:property value="name" /></div>
</td>
<td>
<s:textfield name="number"/>
</td>
<td>
<input type="text" />
</td>
<td>
<s:textfield name="signature"/>
</td>
</tr>
</s:iterator>
现在我的问题是当在JSP中修改了arraylist中的bean的值时,同样没有达到动作类的save方法。价值保持不变。
此致 罗希特夏尔
答案 0 :(得分:1)
解决此问题
<s:iterator id="twtFeedAccts" value="twtFeedAccts" status="twtAcct">
<tr>
<td width="250">
<img src="<s:property value="%{twtFeedAccts[#twtAcct.index].pic}" />" width="25px" height="25px" />
<s:property value="%{twtFeedAccts[#twtAcct.index].name}" />
</td>
<td width="200">
<s:textfield id="twtFeedAccts[%{#twtAcct.index}].number" name="twtFeedAccts[%{#twtAcct.index}].number" value="%{twtFeedAccts[#twtAcct.index].number}" />
</td>
<td width="200">
<s:select id="twtFeedAccts[%{#twtAcct.index}].cycle" name="twtFeedAccts[%{#twtAcct.index}].cycle" value="%{twtFeedAccts[#twtAcct.index].cycle}"
label="Select a month" list="#{'2':'2 hrs','4':'4 hrs', '6':'6 hrs', '12':'12 hrs', '24':'24 hrs'}" />
</td>
<td width="250">
<s:textfield id="twtFeedAccts[%{#twtAcct.index}].signature" name="twtFeedAccts[%{#twtAcct.index}].signature" value="%{twtFeedAccts[#twtAcct.index].signature}" size="40"/>
</td>
<td width="50">
<s:checkbox id="twtFeedAccts[%{#twtAcct.index}].selected" name="twtFeedAccts[%{#twtAcct.index}].selected" value="%{twtFeedAccts[#twtAcct.index].selected}" />
</td>
</tr>
</s:iterator>
当您提交表单时,将填充bean。
此致 罗希特夏尔
答案 1 :(得分:0)
答案 2 :(得分:0)
我已经解决了这个问题:
我的JSP:
<s:iterator value="feedbackFor" var="feedbackFor" status="stat">
<tr>
<td><s:label> <s:property value="feedbackFor" /></s:label> </td>
<td><s:label><s:property value="empName"/></s:label></td>
<s:hidden name="feedbackFor[%{#stat.index}].feedbackBy" value="%{feedbackBy}"></s:hidden>
<s:hidden name="feedbackFor[%{#stat.index}].feedbackFor" value="%{feedbackFor}"></s:hidden>
<!--<s:hidden name="feedbackFor.[%{#stat.index}].positiveFeedback" value="%{positiveFeedback}"></s:hidden>-->
<td><s:textfield name="feedbackFor[%{#stat.index}].positiveFeedback" value="%{positiveFeedback}" size="100"/></td>
<td><s:textfield name="feedbackFor[%{#stat.index}].negetiveFeedback" value="%{negetiveFeedback}" size="100"/></td>
</tr>
</s:iterator>
</table>
<s:submit value="Submit Feedback"/>
</s:form>
我的行动
public class FeedbackAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<FeedbackDTO> feedbackFor;
private String employeeId;
public List<FeedbackDTO> getFeedbackFor() {
return feedbackFor;
}
public void setFeedbackFor(List<FeedbackDTO> feedbackFor) {
this.feedbackFor = feedbackFor;
}
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(String employeeId) {
this.employeeId = employeeId;
}
public String getEmployees(){
FeedbackHelper feedbackHelper = new FeedbackHelper();
feedbackFor=feedbackHelper.getEmployeeList(employeeId);
System.out.println("The feed back populated is "+ feedbackFor + "Size is "+ feedbackFor.size());
return SUCCESS;
}
public String submitFeedback(){
System.out.println("The feed back repopulated is "+ feedbackFor + "Size is "+ feedbackFor.size());
return SUCCESS;
}
}