发表于: 2017-10-28 23:02:17
1 723
今天完成的事情
将职业介绍页面转为动态
其中大部分的信息都基本是固定不变的,可以考虑直接写在页面中,只需要将职业名称,在学人数,稀缺程度这些信息改为动态。
步骤和之前的一样,效果如下:
利用tiles框架,实现代码的复用
将页面中重复的部分,既头部hefader和尾部footer提取出来
只有头部和尾部的效果:
需要建立tiles的配置文件tiles.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="*.page" template="/template.jsp">
<put-attribute name="title" value=""/>
<put-attribute name="header" value="/header.jsp"/>
<put-attribute name="body" value="/{1}.jsp"/>
<put-attribute name="footer" value="/footer.jsp"/>
</definition>
</tiles-definitions>
在springmvc.xml中配置tiles的视图解析器:
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" p:order="1"/>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>classpath:tiles.xml</value>
</list>
</property>
</bean>
对于header和footer,都是固定的内容,可以直接引用,对于body,参考大佬们的方法,进行了特殊处理,如以上的tiles.xml中所示,在控制器中设置相应的返回值,如home.page ,利用 {1} 可以获取到home字符,使得value=/home.jsp ,当加载template.jsp时,会根据字符body加载home.jsp。
template.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>
<div>
<tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="body"/>
<tiles:insertAttribute name="footer"/>
</div>
需要在控制器中设置相应的返回值:
@RequestMapping("home")
public String introductionView(Model model)
List<StudentWeb> studentWebs=studentWebService.list();
model.addAttribute("s",studentWebs);
return "home.page";
}
页面成功显示:
明天的计划
修改代码,完善以下对不能加载页面情况的处理
遇到的问题
无
收获
了解了tiles的使用
评论