0

我正在尝试在页面加载时从ActionSupportJSP 页面名称中迭代请求属性,EnergyConsumptionAnalysis以使用 struts2 使用相同的 JSP 页面在浏览器上显示它,但在运行时我得到空显示。谁能告诉我我在做什么错?

JSP:

<s:action name = "FetchSite"></s:action>
  <s:iterator value="siteData">
        <s:property value = "name"/>
  </s:iterator>

行动支持:

public class EnergyAction extends ActionSupport implements  ServletRequestAware
{
    private HttpServletRequest request;
    @Override
    public String execute()
            throws Exception {
        //Get the site Data
        EnergyAnalysisBusinessHandler handler = new EnergyAnalysisBusinessHandler();

        //setting attribute as arraylist type
        request.setAttribute("siteData", handler.getSiteData());
        return SUCCESS;
   }

    public void setServletRequest(HttpServletRequest request){
        this.request = request;
    }

    public HttpServletRequest getServletRequest(){
    return request;
  }

struts.xml:

<action name = "FetchSite" class = "com.javaworld.email.EnergyAction">
               <result name = "success">jsp/EnergyConsumptionAnalysis.jsp
               </result>
 </action>
4

2 回答 2

4

1 您正在尝试从值堆栈中获取 siteData,但您将其放入请求中。这样您就可以从请求中获取它:

<s:iterator value="#request.siteData">
        <s:property value = "name"/>
</s:iterator>

2 将一些参数传递给 .jsp 的最简单方法是在 Action 中创建 getter/setter。根本不需要在请求中放入参数。

行动:

    public class EnergyAction extends ActionSupport
    {
        private Object siteData;

        @Override
        public String execute()
                throws Exception {
            //Get the site Data
            EnergyAnalysisBusinessHandler handler = new EnergyAnalysisBusinessHandler();
            siteData = handler.getSiteData();
            return SUCCESS;
       }

        public void setSiteData(Object siteData){
            this.siteData = siteData;
        }

        public Object getSiteData(){
            return siteData;
        }
    }

JSP:

<s:iterator value="siteData">
  <s:property value = "name"/>
</s:iterator>
于 2012-05-28T12:45:39.727 回答
0

而不是这个:

<s:iterator value="siteData">
        <s:property value = "name"/>
  </s:iterator>

你可以使用这个:

<s:iterator value="%{#request.siteData}">
        <s:property value = "name"/>
  </s:iterator>
于 2012-05-28T12:36:38.157 回答