2012-05-28 78 views
0

我想在頁面加載的JSP頁面名稱EnergyConsumptionAnalysis中從ActionSupport迭代請求屬性,以使用相同的JSP頁面在使用struts2的瀏覽器上顯示它,但是在運行時我得到空的顯示。任何人都可以告訴我我在做什麼錯?如何迭代struts 2中的請求屬性?

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> 
+0

我不知道爲什麼你想,當u有更好的選擇,通過使用簡單的getter和setter的使用值棧與請求對象玩。我將與'Vasily Komarov'一起消化 –

+0

我是struts新手,我不知道它。感謝您的建議。 – Stardust

+0

@Stardust要小心一件事值棧擴大範圍,你的參數也可以在重定向中使用,通常的重定向行爲將忽略初始請求中設置的任何參數,所以如果你真的需要這樣的話,請檢查你的用例 – mprabhat

回答

3

1你正在嘗試從值棧,但你把它放在請求中的siteData。 這樣你可以把它從請求:

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

2 simpliest的方式來傳遞一些參數到您的.jsp是在你的行動創建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> 
0

的這個代替:

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

你可以使用這個:

<s:iterator value="%{#request.siteData}"> 
     <s:property value = "name"/> 
    </s:iterator> 
+0

Down voteer care care to comment – mprabhat