发表于: 2017-07-03 23:43:48

1 1181


1. 来到了北京线下,认识了各种师兄师姐。还没改头像什么的,明天弄好。


2. 学习了如何添加JSP自定义标签;有哪几个步骤;tld配置文件怎么写,都配置哪些内容;JSP页面如何导入配好的自定义标签;如何配置标签的属性(Attribute);SimpeTag接口是什么,怎么写标签处理器类;带属性的自定义标签在JSP页面上写。


3. 学习了Tiles框架单独使用的基本用法,如何配置web.xml,如何配置tiles.xml,如何写模板和定义。但是把SpringMVC和Tiles整合在一起时一直失败,原因不明。把视图解析器换成Tiles的就空指针异常了。

<bean id="viewResolver"
         class="org.springframework.web.servlet.view.UrlBasedViewResolver">

       <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"></property>

 </bean>

4. 完成了任务4的第二部分:

  • 2.用Tiles来完成页面的复用配置,用Tag标签来处理时间的转换,可以自行写一个JSP的时间处理Tag,可以根据传入的时间格式把Long变成对应的格式。



首先是用Tiles重新组合页面,根据观察两个页面可以分为5个部分,title,header,navbar,body,footer,只有body和title不一样。

web.xml增加

<servlet>
   <servlet-name>Tiles Dispatch Servlet</servlet-name>
   <servlet-class>org.apache.tiles.web.util.TilesDispatchServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>Tiles Dispatch Servlet</servlet-name>
   <url-pattern>*.tiles</url-pattern>
</servlet-mapping>


<listener>
   <listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
</listener>


tiles.xml (只写了主页,另一个只有title和body不一样)

<tiles-definitions>
   <definition name="homepage" template="/layouts/classic.jsp">
       <put-attribute name="title" value="首页-HomePage" />
       <put-attribute name="header" value="/header.jsp" />
       <put-attribute name="navbar" value="/navbar.jsp" />
       <put-attribute name="body" value="/index_body.jsp" />
       <put-attribute name="footer" value="/footer.jsp" />
   </definition>
</tiles-definitions>


因为没有和SpringMVC整合,所以mvc的配置文件了没有配bean


index

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link href="bootstrap.min.css" rel="stylesheet" type="text/css">
   <link href="../bootstrap-3.3.5-dist/css/bootstrap.css">
   <link href="Untitled-3.css" rel="stylesheet" type="text/css">
   <link href="Untitled-1base.css" rel="stylesheet" type="text/css">
</head>
<body>
   <tiles:insertDefinition name="homepage" />
</body>
</html>


其他的几个jsp就是把原来的html拆开了放在不同的jsp里面。


第二部分就是写一个自定义的tag标签,将Long转为date,但这两个页面没有返回时间,就用了前面GET页面。


标签处理器类:相当于一个方法,传入一个Long,直接在页面上打出来了,我希望是返回一个字符串,让页面去打印,但是不会实现。

public class LongToDateTag implements SimpleTag {

private Long longTime;
   private PageContext pageContext;

   public void setLongTime(Long longTime) {
            this.longTime = longTime;
   }

@Override
   public void doTag() throws JspException, IOException {
         if(longTime != null){
           JspWriter out = pageContext.getOut();
           out.print(DateFormat.getInstance().format(longTime));
       }
    }

tld文件:

<tlib-version>1.0</tlib-version>
<short-name>zt1106</short-name>
<uri>http://zt1106.com</uri>


<!-- Invoke 'Generate' action to add tags or functions -->
<tag>
   <name>longToDate</name>
   <tag-class>com.zt1106.xiuzhen.task2.tag.LongToDateTag</tag-class>
   <body-content>empty</body-content>

   <attribute>
       <name>longTime</name>
       <required>true</required>
       <rtexprvalue>true</rtexprvalue>
   </attribute>
</tag>

JSP中使用标签:

<c:forEach items="${requestScope.users }" var="user">
      <zt1106:longToDate longTime="${user.createAt}"></zt1106:longToDate>
      ${user.createAt } <br><br>
</c:forEach>


效果:


明天:完成任务四;学习SpringMVC的View类是什么;看看师兄的代码是怎么写的,学习他们写代码的规范;


问题:高亮


总结:无




返回列表 返回列表
评论

    分享到