关于Struts2返回类型的问题

时间:2011-05-12 15:06:49

标签: struts2

我有以下情况:

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上的数据

我该怎么做?

2 个答案:

答案 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处的示例。