我有以下情况:
struts.xml中
<action name="user_initNews" method="initNews" class="it.sba.bcc.sbarima.user.web.action.UserAction">
<result type="dispatcher">
<param name="location">pages/elementicomuni/elencoNews.jsp</param>
</result>
</action>
用户操作
public class UserAction extends BaseAction
{
private NewsService newsService = null;
private User utente;
private List<News> news;
public String initNews()
{
return SUCCESS;
}
public void elencoNews()
{
try
{
newsService = UserServiceFactory.getNewsService();
this.news = newsService.getNews(getAbiUserProfile(), getMatricolaUserProfile());
}
catch (ServiceException e)
{
e.printStackTrace();
}
}
public List<News> getNews()
{
return news;
}
}
elencoNews.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?xml version="1.0" encoding="utf-8"?>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<s:action name="user_elencoNews!elencoNews"></s:action>
<s:iterator value="news" var="n">
<label><s:property value="descrizione"/></label>
</s:iterator>
</body>
</html>
当渲染elencoNews.jsp时,我想从JSP页面调用一个返回一组POJO来迭代的动作。
正确调用了elencoNews.action,但我不知道如何处理elencoNews.jap上的数据
我该怎么做?
答案 0 :(得分:0)
我担心你误解了整个Struts2典型的工作流程。您(通常)不希望从JSP调用另一个操作,在您的操作处理完请求后,JSP呈现的典型工作流中,它只显示数据(通常来自您的Action实例,它位于值堆栈中)。 例如,阅读here
在您的示例中,您应该在JPS中编码:
<s:iterator value="news" var="n">
<s:property value="descrizione"/>
</s:iterator>
如果您清楚地了解这些概念(并且您编写了最基本的典型struts2案例),请忽略这一点,并更明确地了解您要完成的任务 - 为什么单个请求和jsp涉及两个操作
答案 1 :(得分:0)
如果你想要一个动态的jsp页面,你可以考虑使用Struts2-jQuery插件,它允许你在JSP中调用另一个动作并加载结果。请参阅 Ajax Link 或 Ajax Div 部分下的http://www.weinfreund.de/struts2-jquery-showcase/index.action处的示例。