我刚从JSP中获得了以下Struts2表单的帮助。没有显示任何值。有人可以帮忙吗?
<s:iterator value="bulletins">
<s:if test="approved == false">
<s:form action="ApproveBulletin" method="post">
<table>
<tr>
<td colspan="2"><b>From:</b> <s:property value="name" /></td>
</tr>
<tr>
<td colspan="2"><b>Subject:</b> <s:property value="subject" /></td>
</tr>
<tr>
<td colspan="2"><b>Date:</b> <s:property value="date" /> <br>
</td>
</tr>
<tr>
<td colspan="2"><s:property value="note" />
<s:hidden name="id" value="id" /></td>
</tr>
<tr>
<td><s:submit type="button" value="approve" label="Approve"
action="ApproveBuletin" /></td>
<td><s:submit type="button" value="deny" label="Deny"
action="DenyBulletin" /></td>
</tr>
</table>
<br />
</s:form>
</s:if>
</s:iterator>
这是我的动作类中的代码,它将我的迭代器传递给我的JSP。
public String execute() {
BulletinDAO bulletinDAOInstance = new BulletinDAO();
List<Bulletin> bulletins = bulletinDAOInstance.getAllBulletins();
if (bulletins != null) {
HttpSession session = (HttpSession) request.getSession();
session.setAttribute("bulletins", bulletins.iterator());
return "success";
}
return "failure";
}
答案 0 :(得分:0)
您是否在转发之前在动作类中设置了“公告”迭代器?
答案 1 :(得分:0)
以下代码未经过测试
public MyActionClass extends ActionSpport{
public List<Bulletin> bulletins; //not encapsulated to shorten example, if you do add getters/setters the JSP will continue to work.
public String execute() {
BulletinDAO bulletinDAOInstance = new BulletinDAO();
bulletins = bulletinDAOInstance.getAllBulletins();
if (bulletins != null) {
return "success";
}else{
return "failure";
}
}
Struts2将Action对象推送到值堆栈,因此您无需将其值推送到会话上以访问它。会话应该只保存长期存在的值。也许是用户偏好...如果您确实需要访问会话值,请使用#session.property
,请参阅此处:http://struts.apache.org/2.0.11.1/docs/ognl.html
在提供的代码中存在一些小问题。如果使操作类实现Preparable接口,则可以移动逻辑以将DAO设置为prepare()。可以将公告测试移到validate(),但由于各种原因,它在execute()中可能更好。
答案 2 :(得分:0)
这是我用来最终获取隐藏标记中的id变量的代码。它并不需要太多。
<s:hidden name="id" value="%{id}" /></td>