三、

作者: lifeline张 | 来源:发表于2018-07-16 11:46 被阅读0次

    一、<c:import/>

    本标签的作用是在一个页面做红嵌入另一个资源内容。

    二、实例

    需求,因为每一个分页都需要用到:


    image.png

    所以可以把这个玩意拿出来做一个公共的东西。

    示例代码:
    newsDetailList.jsp页面:

    <%@page import="com.kgc.util.PageSupport"%>
    <%@page import="com.kgc.pojo.News"%>
    <%@page import="java.util.List"%>
    <%@page import="com.kgc.service.impl.NewsServiceImpl"%>
    <%@page import="com.kgc.service.NewsService"%>
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%--动态包含无法使用,页面报错,newsService无法使用 <jsp:include page="../common/common.jsp" /> --%>
    <%@include file="../common/common.jsp" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>无标题文档</title>
    <style type="text/css">
    <!--
    
    -->
    </style>
    <script>
        function addNews(){
            window.location="newsDetailCreateSimple.jsp";
        }
    
        
        // 下面这段代码不用事件触发,只要进了这个脚本就会执行的
        var flag = ${param.flag};
        if (flag != null && flag != "" && undefined != flag){
            if (flag == "success") {
                alert("删除成功");
            } else {
                alert("删除失败");
            }
        }
    </script>
    </head>
    
    <body>
    
    <!--主体-->
        <div class="main-content-right">
            <!--即时新闻-->
            <div class="main-text-box">
                <div class="main-text-box-tbg">
                    <div class="main-text-box-bbg">
                        <form name ="searchForm" id="searchForm" action="/news/jsp/admin/newsDetailList.jsp" method="post">
                          <div>
                            新闻分类:
                                <select name="categoryId">
                                    <option value="0">全部</option>
                                    
                                        <option value='1' >国内</option>
                                    
                                        <option value='2' >国际</option>
                                    
                                        <option value='3' >娱乐</option>
                                    
                                        <option value='4' >军事</option>
                                    
                                        <option value='5' >财经</option>
                                    
                                        <option value='6' >天气</option>
                                    
                                </select>
                            新闻标题<input type="text" name="title" id="title" value=''/>
                                <button type="submit" class="page-btn">GO</button>
                                <button type="button" onclick="addNews();" class="page-btn">增加</button>
                                <input type="hidden" name="pageIndex" value="1"/>
                </div>
                </form>
                <table cellpadding="1" cellspacing="1" class="admin-list">
                    <thead >
                        <tr class="admin-list-head">
                            <th>新闻标题</th>
                            <th>作者</th>
                            <th>时间</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                         <%
                        //获取当前页码
                        String currntPage=request.getParameter("pageIndex");
                        if(currntPage==null)
                            currntPage="1";
                        int pageIndex=Integer.parseInt(currntPage);
                        //获取新闻记录总数量
                        int totalCount=newsService.getTotalCount();
                        //每页显示记录数
                        int pageSize=2;
                        /*获取总页数*/
                        PageSupport pages=new PageSupport();
                        pages.setCurrentPageNo(pageIndex);
                        pages.setPageSize(pageSize);
                        pages.setTotalCount(totalCount);
                        int totalPage=pages.getTotalPageCount();
                        
                        //控制首页和末页
                        if(pageIndex<1)
                            pageIndex=1;
                        else if(pageIndex>totalPage)
                            pageIndex=totalPage;
                        
                        //每页显示的新闻列表
                        List<News> newsList=newsService.getPageNewsList(pageIndex, pageSize);
                        request.setAttribute("list", newsList);
                    %>
                         <input type="hidden" id="totalPage" value="<%=totalPage%>"/>
                        <c:forEach items="${list}" var="news" varStatus="status">
                        <tr <c:if test="${status.count%2==0 }"> class="admin-list-td-h2"</c:if> >
                            <td><a href='newsDetailView.jsp?id=${news.id }'>
                            <c:out value="${news.title }" escapeXml="true"></c:out>
                            </a></td>
                            <td>${news.author }</td>
                            <td>
                            <fmt:formatDate value="${news.createDate }" pattern="yyyy-MM-dd"/>
                            </td>
                            <td><a href='adminNewsCreate.jsp?id=2'>修改</a>
                                <a href="javascript:if(confirm('确认是否删除此新闻?')) location='adminNewsDel.jsp?id=${news.id }'">删除</a>
                            </td>
                        </tr> 
                        </c:forEach>
                    </tbody>
                </table>
             <%
             //原来的分页条 %>
             <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>
            </div>
           </div>
       </div>
       </div>
    </body></html>
    

    rollpage.jsp页面:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'rollpage.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type="text/javascript">
        function page_nav(frm,num){
            frm.pageIndex.value=num;
            frm.submit();
        }
        function jump_to(frm,pageno){
            //var regexp=/^\d+$/;
            var regexp=/^[1-9]\d*$/;
            var totalPage = document.getElementById("totalPage").value;
            if(!regexp.test(pageno)){
                alert("请输入 正确的数字!");
                return false;
            }else if((pageno-totalPage) > 0){
                alert("总页码一共"+totalPage+"页,请输入正确的页码!");
                return false;
            }else{
                page_nav(frm,pageno);
            }  
            
        }
        </script>
      </head>
      
      <body>
        <%
         // 分页条页面,所有使用分页的页面都可以复用
         %>
           <div class="page-bar">
                <ul class="page-num-ul clearfix">
                    <li>共${param.totalCount}条记录&nbsp;&nbsp; ${param.pageIndex}/${param.totalPage}页</li>
                    <c:if test="${param.pageIndex>1}">
                    <a href="javaScript:page_nav(document.forms[0],1)">首页</a>
                    <a href="javaScript:page_nav(document.forms[0],${param.pageIndex-1})">上一页</a>
                    </c:if>
                    <c:if test="${param.pageIndex<param.totalPage}">
                    <a href="javaScript:page_nav(document.forms[0],${param.pageIndex+1})">下一页</a>
                    <a href="javaScript:page_nav(document.forms[0],${param.totalPage})">最后一页</a>
                    </c:if>&nbsp;&nbsp;
                </ul>
             <span class="page-go-form"><label>跳转至</label>
             <input type="text" name="inputPage" id="inputPage" class="page-key" />页
             <button type="button" class="page-btn" onClick='jump_to(document.forms[0],document.getElementById("inputPage").value)'>GO</button>
            </span>
            </div> 
      </body>
    </html>
    

    三、bug

    3.1bug1:

    image.png

    原因:newsDetailList.jsp页面中的引用rollpage.jsp界面的代码中传过去的参数有问题。因为在rollpage.jsp界面参数都是int,而newsDetailList.jsp传过去的是String类型的数据。所以需要转换一下数据类型。

    3.2bug2

    今天上午点击增加新闻页面和下一页上一页和跳转查询都没有用,不知道什么原因,但是这次操作之后功能都恢复了。可能的原因是把newsDetailList.jsp页面重新剪切和粘贴了一下,具体为什么不清楚。

    相关文章

      网友评论

          本文标题:三、

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