2012年9月6日星期四

struts2中s:doubleselect/标签的使用心得原创

struts2中s:doubleselect/标签的使用心得原创

  两个Bean:Category(父框中显示)、SubCategory(联动子框中显示)。

  Action中:

        。

        。

        。

      private Map<Long, List<SubCategory>> subCategoryMap = new HashMap<Long, List<SubCategory>>();//全局变量getter,setter方法自己写

        。

        。

        //方法中关键代码如下

      List<Category> categoryList = categoryService.findAllCategory();

      for(int i=0;i<categoryList.size();i++){
        List<SubCategory> templist = new ArrayList<SubCategory>();
        templist = subCategoryService.findByCategoryId(categoryList.get(i).getId());
        subCategoryMap.put(categoryList.get(i).getId(),templist);
      }

   jsp页面显示:

    <s:doubleselect theme="simple" tooltip="所有分类" name="event.category.id"
      list="categoryList" listKey="id" listValue="categoryName"
      doubleList="subCategoryMap[top.id]" doubleName="event.subCategory.id"
      doubleListKey="id" doubleListValue="name" />

    页面关键:通过doubleList属性,将第一个框list中的id和第二个框中的Map中的key联系起来,top值第一个框中的整个对象

    特别注意:<s:doubleselect/>标签必须放在<s:form>中,放在普通<form>中会出错,而且s:form必须指定name属性

    另外,希望页面美观的话,希望s:doubleselect标签和左边的字对齐,则指定s:doubleselect属性theme="simple"

       希望两个select排成一行(貌似默认是上下行的),则在页面顶部声明css:

        <style type="text/css">
         .doubleselect br{
          display: none;
         }
        </style>

       然后在<s:form>外面套一个< div >就可以了!


TAG: