今天愣了半天硬是没想到用map,在此还原以下代码

    /**
     * 左边为项目类型,树结构的,需要将项目的树结构目录加上项目名拼接在一起,不同的项目做成下拉列表
*/ @Transactional(readOnly = false) public List<Map<String,Object>> findFullName(){
//获取所有的父id和项目名称 List
<ProjectInfo> list=projectInfoDao.findParentIdsAndProjectName();
//定义一个list,泛型为map List
<Map<String,Object>> fullNameList=new ArrayList<Map<String,Object>>(); for (ProjectInfo projectInfo : list) {
//获取所有项目类型的父节点 String parentIds
=projectTypeService.get(projectInfo.getProjectTypeId()).getParentIds();
//获取本项目的项目类型 String ptName
= projectTypeService.get(projectInfo.getProjectTypeId()).getName();
//获取本项目名称 String projectName
=projectInfo.getProjectName();
//拆分父节点 String [] pId
=parentIds.split(","); StringBuffer fullName=new StringBuffer(); Map<String,Object> map = new HashMap<String,Object>(); for (String str : pId) { if (!"0".equals(str)) {
//通过父节点项目类型名称 String proTypeName
=projectTypeService.get(str).getName();
//拼接父节点 fullName
=fullName.append(proTypeName+"--"); } }
//在外层循环拼接本次项目类型名称和项目名称
fullName.append(
"--"+ptName).append("--"+projectName);
          //数据库设计存放的是projectId,没fullName,fullName只是在前台展示,
//因此在form变单save的时候fullName必须与所属项目id保持一致,将id传到后台
map.put("fullname", fullName); map.put("id",projectInfo.getId()); fullNameList.add(map); } return fullNameList; }

前端也就很好写了

<div class="control-group">
     <label class="control-label">所属项目:</label>
      <div class="controls">
         <form:select path="projectId" class="input-xlarge">
             <c:forEach var="fullName" items="${fullNames}">
                         <option value="${fullName.id}" selected>
                            ${fullName.fullname}
                         </option>
                     </c:forEach> 
        </form:select>
      </div>
</div>

好了ok

树结构的
posted on 2017-06-21 22:17  大山008  阅读(303)  评论(0编辑  收藏  举报