2013-03-06 49 views
0

我能夠從我的數據庫(我正在使用ORM即Hibernate)獲取列表。在選擇框中填充列表中的錯誤

列表類型是我的Bean類。

不過,我面臨的問題是:

  1. 填充在選擇框中的是有對象的列表。不是價值。

要求是它應該填充名稱。

動作類別:

package com.action; 

import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 
import java.util.logging.Logger; 

import org.apache.commons.io.FileUtils; 
import org.apache.struts2.interceptor.SessionAware; 
import org.springframework.beans.factory.annotation.Autowired; 

import com.ing.aosh.service.AoshService; 
import com.ing.aosh.vo.EscRprtNameVO; 
import com.opensymphony.xwork2.ActionSupport; 

public class FileUploadAction extends ActionSupport implements SessionAware{ 

    Logger logger = Logger.getLogger(FileUploadAction.class.getName()); 
    private Map session; 
    private String slectList; 
    EscRprtNameVO escNameRprtVo = new EscRprtNameVO(); 
    private File report; 
     private String reportContentType; 
     private String reportFileName; 
     private List escRprtNameList = new ArrayList(); 

    @Autowired 
    AoshService aoshService; 

    @Override 
    public String execute() throws Exception { 
     escRprtNameList = aoshService.getEscRprtNmNid(); 
     System.out.println("escRprtNameList 2==" + ((EscRprtNameVO) escRprtNameList.get(2)).getEscRprtName()); 
     System.out.println("escRprtNameList 4==" + ((EscRprtNameVO) escRprtNameList.get(4)).getEscRprtName()); 
     session.put("ESCRPTDETAILS", escRprtNameList); 
     return "success"; 
    } 

     public AoshService getAoshService() { 
      return aoshService; 
     } 

     public void setAoshService(AoshService aoshService) { 
      this.aoshService = aoshService; 
     } 

     public void setSession(Map session) { 
      // TODO Auto-generated method stub 
      this.session = session; 

     } 

     public EscRprtNameVO getEscNameRprtVo() { 
      return escNameRprtVo; 
     } 

     public void setEscNameRprtVo(EscRprtNameVO escNameRprtVo) { 
      this.escNameRprtVo = escNameRprtVo; 
     } 

     public String getSlectList() { 
      return slectList; 
     } 

     public void setSlectList(String slectList) { 
      this.slectList = slectList; 
     } 

     public List getEscRprtNameList() { 
      return escRprtNameList; 
     } 

     public void setEscRprtNameList(List escRprtNameList) { 
      this.escRprtNameList = escRprtNameList; 
     } 
} 

JSP PAGE:

<s:set name="esclatnRprtName" value="#session.ESCRPTDETAILS"></s:set> 
    <td align="left"> 
    <s:if test="#esclatnRprtName != null">  
     <s:select list="esclatnRprtName" name="slectList"/> 
    </s:if> 
    </td> 

用於上述JSP代碼它給我選擇對象值的箱

改性JSP PAGE

<s:set name="esclatnRprtName" value="#session.ESCRPTDETAILS"/> 
    <td align="left"> 
     <s:if test="#esclatnRprtName != null">  
     <s:select list="esclatnRprtName" name="slectList" 
        listKey="esclatnRprtName['escNameRprtVo.escId']" 
        listValue="esclatnRprtName['escNameRprtVo.escRprtName']"/> 
     </s:if> 
    </td> 

列表本身不填充..

請求幫助或建議

+0

你在哪裏填充了選擇列表? – 2013-03-06 15:09:10

+0

你的變量的命名真的很重要。爲什麼沒有人聲?他們是免費的:& – 2013-03-06 17:36:06

回答

0

試試這個

<s:select list="esclatnRprtName" name="slectList" 
    listKey="escId" 
    listValue="escRprtName"></s:select> 
0

<s:select>添加井號到esclatnRprtName引用,正如你在<s:if>聲明沒有:

<s:select list="#esclatnRprtName" name="slectList" 

並直接引用listKey和listValue中列出的對象:

listKey="escId" 
listValue="escRprtName" /> 

當所有的作品,你應該:

  • 重新命名所有的變量加入人聲,使他們可以理解爲未來的可憐的傢伙,將處理您的代碼時,你會用別的東西;
  • 暫時想一想爲什麼你需要使用這個涉及Session的複雜方法來執行像這樣的簡單操作,而不是通過訪問器和增變器來使用簡單的Action變量。
+1

''是合法表達式。 – 2013-03-06 17:59:22

+0

編輯相應,謝謝 – 2013-03-06 22:24:19

+0

@AndreaLigios感謝它爲我工作....你能詳細說明你是什麼意思的「添加vocals」。要非常誠實,我沒有得到你在這..任何幫助這將受到高度讚賞。 – saharsh 2013-03-07 05:14:46