选择框中填充列表时出错

时间:2013-03-06 14:45:59

标签: java struts2

我可以从我的数据库中获取列表(我正在使用ORM即Hibernate)。

列表类型属于我的Bean类。

但我面临的问题是:

  1. SELECT BOX中填充的列表包含Object。不是价值观。
  2. 必需的是它应该填充名称。

    行动类:

    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代码,它给我选择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>
    

    列表本身没有填充..

    请求帮助或建议

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

<s:select>中的octothorpe添加到esclatnRprtName的引用中,就像在<s:if>语句中一样:

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

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

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

当一切正常时,你应该:

  • 重命名所有变量,添加人声,让未来的穷人可以理解,当你在其他地方时会处理你的代码;
  • 停下来思考为什么你需要使用这个涉及Session的复杂方法来执行这样的简单操作,而不是通过访问器和变换器使用简单的Action变量。