0

我能够从我的数据库中获取列表(我使用的是 ORM,即 Hibernate)。

列表类型是我的 Bean 类。

但我面临的问题是:

  1. SELECT BOX 中填充的列表具有对象。不是价值观。

要求是它应该填充名称。

动作类:

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页面:

  <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 代码,它给了我 OBJECT VALUE 的选择框

修改后的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>

列表本身没有填充..

请求帮助或建议

4

2 回答 2

0

尝试这个

 <s:select list="esclatnRprtName" name="slectList"
   listKey="escId"
   listValue="escRprtName"></s:select>
于 2013-03-06T14:48:27.077 回答
0

将 octothorpe 添加到您在声明中所做<s:select>的引用中:esclatnRprtName<s:if>

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

并直接引用 listKey 和 listValue 中列出的对象:

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

当一切正常时,您可能应该:

  • 重命名所有变量,添加人声,让未来的穷人可以理解它们,当你在其他事情上时,他们会处理你的代码;
  • 停下来想一想为什么需要使用这种涉及 Session 的复杂方法来执行这样的简单操作,而不是通过访问器和修改器使用简单的 Action 变量。
于 2013-03-06T17:48:17.417 回答