现在的位置: 首页 > 综合 > 正文

struts常用标签举例

2013年08月30日 ⁄ 综合 ⁄ 共 5873字 ⁄ 字号 评论关闭

                   

     使用struts开发项目已经半年的时间了,因为记性不太好,在开发过程中,经常参考以前的代码,现整理几条自己平
时遇到的标签总结如下:

 

1.<s:radio />标签的使用:
    <s:radio name="comicImage.highQuality" id="highQuality" theme="simple"
      list="#{0:getText('comicImage.highQuality.true'),1:getText('comicImage.highQuality.false')}"
         listKey="key" onclick="selectAll();" listValue="value"  value=“1”></s:radio>
         此时,单选框组内第二个被默认选中,除设置“value”值与list的key相同外,也可设置”name“属性值与key相同,
         当然,name和value都可以是ACTION里面已经赋值的参数,这样radio都可以实现默认选中。
        

2.<display:table>得到当前行数:
  <%
   int roww=0;
  %> 
  <display:table name="comicImages" cellspacing="0" cellpadding="0" id="comicImage" class="table" export="false">
     <%roww++;%>      
    <display:column escapeXml="false" sortable="false" titleKey="comicImage.imageId"
                    style="width: 8%">
       ${comicImage_rowNum}
    </display:column>
  </display:table>
   comicImages即action得到的list对象集合, 如上,有两种方法可以得到当前行数,定义一个变量,每循环一行数值增1;
   ${comicImage_rowNum}也可以得到当前的行数;

3. <s:select>在普通表单页面
   <s:select label="%{getText('comicImage.srouceType')}"
                  list="#{'0':getText('series.srouce.0'),'1':getText('series.srouce.1'),'2':getText('image.srouce.2')}"
                  listKey="key" listValue="value"
                  name="comicImage.srouceType" value="%{comicImage.srouceType}"/>
   此时name和value的值都是表单对象传递过来的值,也可只写其中一个属性,实现下拉框默认选中;

4.<s:select>在<display:table>标签之内:
 若<s:select>嵌在<display:table>标签中,上面“3”的方法就无法实现默认选中。name和value属性无法按以上方法得到值;
    <s:select    
                list="#{'0':getText('image.srouceType.0'),'1':getText('image.srouceType.1'),'2':getText('image.srouceType.2')}"
                listKey="key" listValue="value"
                name="#attr.comicImage.srouceType" theme="simple"
                onchange="javascript:upCateOrType('%{#attr.comicImage.imageId}',this.options[this.options.selectedIndex].value,false);"/>

5.<s:bean> 调用java类,得到分类下拉框
   (1) bean 代码:
    public class CategoryData {
    private static HashMap<Boolean, LinkedHashMap<Integer, String>> categorysByIsSeris =
    new HashMap<Boolean, LinkedHashMap<Integer, String>>();
    private static LinkedHashMap<Integer, String> categorysAll = new LinkedHashMap<Integer, String>();
    private static List<ComicCategory> categoryList = new ArrayList<ComicCategory>();
    static {
        LinkedHashMap<Integer, String> categorys = new LinkedHashMap<Integer, String>();
        LinkedHashMap<Integer, String> categorysIsSeris = new LinkedHashMap<Integer, String>();
        ComicCategoryDao comicCategoryDao = (ComicCategoryDao) SpringBeanUtils.getInstance().getBean("comicCategoryDao");
        List<ComicCategory> listIsSeris = comicCategoryDao.getListByIsSeries(true);
        List<ComicCategory> list = comicCategoryDao.getListByIsSeries(false);
        for (ComicCategory comic : listIsSeris) {
            categorysIsSeris.put(comic.getCategoryId(), comic.getName());
            categoryList.add(comic);
        }
        for (ComicCategory comic : list) {
            categorys.put(comic.getCategoryId(), comic.getName());
            categoryList.add(comic);
        }
        categorysAll.putAll(categorysIsSeris);
        categorysAll.putAll(categorys);

        categorysByIsSeris.put(false, categorys);
        categorysByIsSeris.put(true, categorysIsSeris);
    }

     public static String getCategoryNameById(int cate_id) {
        String name = categorysAll.get(cate_id);
        return null == name ? "" : name;
    }

    //get category'id  by index and isSeris
    public static Integer getCateVal(int which, Boolean isSeris) {
        if (which < 0)
            return 0;
        return (Integer) getCategoryMap(isSeris).keySet().toArray()[which];
    }

    //get category'id  by index
    public static Integer getCateVal(int which) {
        if (which < 0)
            return 0;
        return (Integer) categorysAll.keySet().toArray()[which];
    }

    //get category'name by index and isSeris
    public static String getCateName(int which, Boolean isSeris) {
        String name = getCategoryMap(isSeris).get(getCateVal(which, isSeris));
        return (null != name) ? name : "";
    }

    //get the category'name of all the  category
    public static String getCateName(int which) {
        String name = categorysAll.get(getCateVal(which));
        return (null != name) ? name : "";
    }

    //get category by isSeris
    public static LinkedHashMap<Integer, String> getCategoryMap(Boolean isSeris) {
        return categorysByIsSeris.get(isSeris);
    }

    //get category not by isSeris
    public static LinkedHashMap<Integer, String> getCategoryMap() {
        return categorysAll;
    }

    //get size by isSeris
    public static int getSize(Boolean isSeris) {
        return getCategoryMap(isSeris).size();
    }

    //get Size not by isSeris
    public static int getSize() {
        return categorysAll.size();
    }
   
    public static List<ComicCategory> getCategoryList(){
     return categoryList;
    }

    public static LinkedHashMap<Integer, String> getSeriesCategoryMap() {
        return categorysByIsSeris.get(true);
    }

    public static LinkedHashMap<Integer, String> getImageCategoryMap() {
        return categorysByIsSeris.get(false);
    }
   }
  (2)使用<s:bean>标签在<display:table>中:
      <s:bean name="com.zongheng.comic.op.webapp.util.CategoryData" id="categoryData"/>
        <s:select list="#categoryData.imageCategoryMap"
                  listKey="key" listValue="value"
                  name="#attr.comicImage.categoryId" theme="simple"
                  onchange="javascript:upCateOrType('%{#attr.comicImage.imageId}',
                  this.options[this.options.selectedIndex].value,true);"/>
  (3)使用java代码实现下拉框:    
      <select name="cateEvent" id="cateEvent" onchange="javascript:upCateOrType(${comicImage.imageId},this.options[this.options.selectedIndex].value,true);" class="select">
        <%
            int CurrCate = ((List<ComicImage>)request.getAttribute("comicImages")).get(roww-1).getCategoryId();
            for (int i = 0; i < CategoryData.getSize(false); i++) {
        %>

        <option value="<%=CategoryData.getCateVal(i,false)%>"  <%
            if (CategoryData.getCateVal(i, false) == CurrCate)
                out.print("selected");
        %> ><%=CategoryData.getCateName(i, false).substring(0,2)%>
        </option>
        <%
            }
        %>
    </select>         

抱歉!评论已关闭.