2 a779122 a779122 于 2014.03.10 16:27 提问

如何在JSP页面中,把数组中的TreeSet中的实体存储地址变成实体对象

首先,感谢大家抽时间看我这问题.
问题阐述:
我在做Spring Hibernate和struts整合的实验,之前,我在Action类中已经将要放在页面中的数据,传到JSP页面中,以下是Action类的代码:

 /**
         * 显示所有的商品分类 *
         * 
         * @return
         */
        public void showAllCategory() {
            try {
                List<CategoryDTO> resultList = this.categoryService.showAllCategory();
                this.getRequest().put("initCategoryList", resultList);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

以下是categoryDTO中的类属性

/**
     * 类别编号
     */
    private Long id;

    /**
     * 类别名称
     */
    private String name;

    /**
     * 商品集合
     */
    private Set<ProductQueryDTO> products = new HashSet<ProductQueryDTO>();

    /**
     * 子类别
     */
    private Set<CategoryDTO> categories = new TreeSet<CategoryDTO>();

由于我想弄个导航条,如:家电->电冰箱
所以想在JSP页面中用foreach来循环打印出所有商品,不知道我说的够不够明白,欢迎追问.
问题来了,我先上JSP页面的代码

<c:forEach items="${requestScope.initCategoryList}" var="categoryDTO" varStatus="vs">
                            <ul>
                                <a ><strong>${categoryDTO.name }</strong></a>
                                <c:forEach items="${categoryDTO.categories } " var="category" varStatus="vs1">
                                    <li><a >${category}</a></li>
                                </c:forEach>
                            </ul>
                    </c:forEach>

但是,我只能把最基本的父类的商品种类打印出来,而家电下面则显示实体DTO的物理地址,可以看以下图
CSDN移动问答
我想问,怎样才能把这个子种类中的种类名字弄出来?${category.name}会报错.

我目前是这样的
CSDN移动问答

1个回答

a779122
a779122   2014.03.11 13:12

已经解决.

由于foreach里面的变量是javascript的,所以是不能将实体赋值给var.

jsp页面的代码变成这样就OK

<%
                List<CategoryDTO> categoiesDTOList = (List<CategoryDTO>)session.getAttribute("initCategoryList");
                for(int i = 0 ; i < categoiesDTOList.size() ; i ++){
                    CategoryDTO dto = categoiesDTOList.get(i);
                %>
                    <ul>
                        <a ><strong><%=dto.getName() %></strong></a>
                        <%
                            Set<CategoryDTO> childrenDTOSet = dto.getCategories();
                            for(CategoryDTO child : childrenDTOSet){
                                out.print("<li><a href='showProductByCategoryAction.action?productQueryDTO.categoryQueryDTO.id="+child.getId()+"'>"+child.getName()+"</a></li>");
                            }
                        %>
                    </ul>
                <%      
                    }
                %>
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!