自定义标签

学过 JSTL 的朋友都会熟悉这个,现在我们重写的纯粹为“轮子”一个,但它非常精简,只有 7 个 SimpleTagSupport 类和一个 tld 配置文件。源码在 com.ajaxjs.web.view。提供下列标签:

在 JSP 页面中声明必不可少的头:<%@taglib uri="/ajaxjs" prefix="c"%>

if 条件判断逻辑

若条件为真,渲染标签内的内容。例子:

<%@taglib prefix="c" 	uri="/ajaxjs"%>

Hello,
<c:if test="${bar > 10}">
    World
</c:if>

<c:if test="${aj_allConfig.user.login.canModiflyUserName}">
    <a href="safe/?action=modiflyUserName">修改登录名</a>
</c:if>

choose 条件判断逻辑

提供类似 if……else…… 逻辑的判断。

<c:choose>
    <c:when test="${empty user}">
        用户不存在
    </c:when>
    <c:otherwise>
        用户名是 :${user.name}
    </c:otherwise>
</c:choose>

遍历列表

foreach 为迭代集合而设,既支持迭代 List/Map/Java 普通数组items 是传入的集合,为必填;item 是变量名,可选,默认为 item;变量 ${currentcnt} 是当前索引;变量 ${cnt} 是集合总数。

遍历列表

<% 
    List<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    list.add("ddd");
    request.setAttribute("list", list);
%>

<c:foreach var="str" items="${list}">${str},前 ${currentIndex}/一共 ${totalCount}</c:foreach>

遍历 Map

<% 
    Map<String, String> map = new HashMap<>();
    map.put("aa","111");
    map.put("bb","222");
    map.put("cc","333");
    map.put("dd","444");
    request.setAttribute("map", map);
%>
<c:foreach var="entry" items="${map}">
    键名:${entry.key } = 值:${entry.value }
</c:foreach>

典型地生成一个下拉列表控件:

<select class="ajaxjs-select" name="sellerId">
    <c:foreach items="${sellers}" var="item">
        <option value="${item.key}" ${item.key == info.sellerId ? 'selected' : ''}>${item.value.name}</option>
    </c:foreach>
</select>

配置标签

<%@taglib uri="/ajaxjs_config" prefix="config"%>
<!-- 顶部导航条 -->	
<config:siteStru type="navBar" />
<!-- 二级菜单 -->	
<config:siteStru type="secondLevelMenu" />
<!-- 二级和三级菜单 -->	
<config:siteStru type="subMenu" />
<!-- 面包屑导航 -->	
<config:siteStru type="breadCrumb" />

// For navBar,是否展示导航的二级菜单
request.setAttribute("showNavSubMenuUl", true);
// For secondLevelMenu,是否展示所有下级菜单
request.setAttribute("showSubMenu", true);

会员用标签

<% @taglib prefix="user" uri="/ajaxjs_user"%>

	${userName}



	登录

基于 TagFiles 的自定义标签

<%@taglib tagdir="/WEB-INF/tags" prefix="tagfiles"%>

页面中读取配置

EL 表达式读取 aj_allConfig 全局配置,这是一个复合嵌套的 map,不断 get(xx).get(xx)……


    ……

也可以执行静态方法读取配置。效率更高,直接读取一个 map 即可。不过先要 import 一下(例如 import="com.ajaxjs.config.ConfigService")。

	
    ……