美文网首页
JSP开发中-JSTL 相关

JSP开发中-JSTL 相关

作者: 暗物质 | 来源:发表于2019-08-22 13:48 被阅读0次

    JSTL

    w3cschool-jsp 在此查阅学习

    • 项目中用到的示例
    <c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
    
    <c:out value="customer.address.street">
    -----------------------------------------------------------------------------------------------
    <c:set
       var="<string>"
       value="<string>"
       target="<string>"
       property="<string>"
       scope="<string>"/>
    <c:set var="salary" scope="session" value="${2000*2}"/>
    <c:out value="${salary}"/>
    -----------------------------------------------------------------------------------------------
    <c:remove var="<string>" scope="<string>"/>
    <c:remove var="salary" scope="session"/>
    <p>删除salary变量后的值:<c:out value="${salary }"/></p>
    -----------------------------------------------------------------------------------------------
    <c:catch var="<string>">
    ...
    </c:catch>
    <c:catch var="catchException">
        <% int x = 5/0; %>
    </c:catch>
    <c:if test="${catchException != null }">
        <p>
            异常为:${catchException }<br/>
            发生了异常:${catchException.message }
        </p>
    </c:if>
    -----------------------------------------------------------------------------------------------
    
    <c:if test="<boolean>" var="<string>" scope="<string>">
       ...
    </c:if>
    
    模拟 if-else:
    <c:set var="salary" scope="session" value="${10000*2-1 }"/>
    <c:if test="${salary > 20000 }" var="salaryFlag" scope="session">
        <p>我的工资为:<c:out value="${salary }"/> </p>
    </c:if>
    <c:if test="${not salaryFlag }">
        <p>我的工资为小于2万:<c:out value="${salary }"/> </p>
    </c:if>
    
    -----------------------------------------------------------------------------------------------
    <c:choose>
        <c:when test="<boolean>">
            ...
        </c:when>
        <c:when test="<boolean>">
            ...
        </c:when>
        ...
        ...
        <c:otherwise>
            ...
        </c:otherwise>
    </c:choose>
    
    <c:choose>
        <c:when test="${salary <= 10000 }">
            太惨了。。
        </c:when>
        <c:when test="${salary > 20000 }">
            太棒了。。
        </c:when>
        <c:otherwise>
            还能生活、、
        </c:otherwise>
    </c:choose>
    
    -----------------------------------------------------------------------------------------------
    <c:import
       url="<string>" 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源
       var="<string>"   用于存储所引入的文本的变量
       scope="<string>"     var属性的作用域
       varRender="<string>"     可选的用于提供java.io.Reader对象的变量
       context="<string>" / 紧接着一个本地网络应用程序的名称
       charEncoding="<string>"/>    所引入的数据的字符编码集
    
    <%
        int totalCount = 10;
        int pageIndex = 2;
        int totalPage = 5;
    %>
    <c:import url="rollpage.jsp">
        <c:param name="totalCount" value="<%=Integer.toString(totalCount) %>"></c:param>
        <c:param name="pageIndex" value="<%=Integer.toString(pageIndex) %>"></c:param>
        <c:param name="totalPage" value="<%=Integer.toString(totalPage) %>"></c:param>
    </c:import>
    
    -----------------------------------------------------------------------------------------------
    
    <c:forEach
        items="<object>"
        begin="<int>"
        end="<int>"
        step="<int>"
        var="<string>"
        varStatus="<string>" >
    
    <c:foreach  items="${sessionScope.userList}"  var="userItem"  begin="1"  end="10"  step="3"  varStatus="userStatus"> XXX </c:foreach>
    实例解读: 对 session 对象存储的 userList 集合对象进行遍历,每次访问的项暂时存储在 userItem 变量中,从索引 1 开始至索引 10 进行访问,但不是依次访问,每隔 3 个元素访问一次。每次访问项的状态相关值由 userStatus 对象暂存。
    
    <c:foreach> 的 varStatus 属性暂存项的相关状态属性,可由 EL 表达式引用。
    ${userStatus.index} 此项的索引,从0开始 
    ${userStatus.count} 此项的计数序号,从1开始 
    ${userStatus.first} 此项是否是第一项,布尔值 
    ${userStatus.last} 此项是否是最后一项,布尔值 
    ${userStatus.begin} 此次迭代的起始索引,对应<c:foreach>中begin属性值 
    ${userStatus.end} 此次迭代的终止索引,对应<c:foreach>中end属性值 
    ${userStatus.step} 此次迭代的跳跃步伐,对应<c:foreach>中step属性值  
    
    <c:forTokens items="google,runoob,taobao" delims="," var="name">
       <c:out value="${name}"/><p>
    </c:forTokens>
    
    -----------------------------------------------------------------------------------------------
    <c:param name="<string>" value="<string>"/>
    <c:url
      var="<string>"
      scope="<string>"
      value="<string>"
      context="<string>"/>
    
    <c:url var="myURL" value="main.jsp">
        <c:param name="name" value="Runoob"></c:param>
        <c:param name="url" value="www.runoob.com"></c:param>
    </c:url>
    <a href="/<c:out value="${myURL }" />">使用 &lt;c:param&gt; 为指定URL发送两个参数。</a>
    
    -----------------------------------------------------------------------------------------------
    
    <c:redirect url="<string>" context="<string>"/>
    
    <c:redirect url="${myURL }"></c:redirect>  运行后马上跳转
    
    -----------------------------------------------------------------------------------------------
    
    

    问题:jsp中根据动态key取map中的bean对象 && js中获取点击事件对象的属性

    Jquery 获取 radio选中值
    jsp页面使用el 按key获取map中的对应值GOOD

    java:
                 
        ModelAndView mv = new ModelAndView();
        String[] categories = NoticeBean.categories();
        Map<String, NoticeBean> noticeBeanMap = new HashMap<String, NoticeBean>();
        for (String key: categories) {
            String jsonString = "....";
            NoticeBean noticeBean = JSON.parseObject(jsonString, NoticeBean.class);
            noticeBeanMap.put(key, noticeBean );
        }
        mv.addObject("noticeBeanMap", noticeBeanMap);
        mv.addObject("categories", categories);
        mv.setViewName("notice/updateNoticeInit");
        return mv;
    
    updateNoticeInit.jsp :
    
    <c:forEach items="${categories }" var="category">
        根据key循环获取map中的对象属性值
            <c:set var="msg" value="${noticeBeanMap[category]['msg'] }"></c:set>
            <button type="button" class="btn btn-default" value="${category }" >按钮</button>
            
            <c:set var="radiozt" value="${category}_zt"></c:set>
            <label><input name=${radiozt } type="radio" value="0"  />0:展示通知 </label><br/>
            <label><input name=${radiozt } type="radio" value="1"  checked="checked" />1:不展示通知 
            
            <c:set var="textareamsg" value="${category}_msg"></c:set>
            <textarea class="form-control" rows="3" cols="150" id=${textareamsg } name="content">${msg }
    </textarea>
    </c:forEach>
    
    js:
    <script type="text/javascript">
    
        $(document).ready(function(){
            $("button").click(function(){
                  var category = $(this).val();
                  var radiozt = category + '_zt';
                  var textareamsg = category + '_msg';
                  
                  var _zt = $('input[name='+radiozt+']:checked').val();
                  var _msg = $('textarea#'+textareamsg).val();
                  $.post("<%=basePath%>notice/updateAlichezhuNotice.do",
                          {category: category, zt:_zt, msg:_msg },
                          function(data, status) {
                             ...
                          })
                          .error(function() { 
                              alert( "网络出问题了,请稍候重试"); 
                          });
              });
        });
    </script>
    

    格式化标签

    SQL标签

    XML 标签

    JSTL函数

    相关文章

      网友评论

          本文标题:JSP开发中-JSTL 相关

          本文链接:https://www.haomeiwen.com/subject/dksgsctx.html