FREEMARKER与SPRINGMVC整合

来源:互联网 发布:360效果图制作软件 编辑:程序博客网 时间:2024/05/14 21:40

<!-- freemarker的配置 -->
 <bean id="freemarkerConfig"
  class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="templateLoaderPath" value="/WEB-INF/view/" />
  <property name="defaultEncoding" value="utf-8" />
  <property name="freemarkerSettings">
   <props>
    <prop key="template_update_delay">10</prop>
    <prop key="locale">zh_CN</prop>
    <prop key="datetime_format">yyyy-MM-dd</prop>
    <prop key="date_format">yyyy-MM-dd</prop>
    <prop key="number_format">#.##</prop>
   </props>
  </property>
 </bean>
 <!-- FreeMarker视图解析   如返回student。。在这里配置后缀名ftl和视图解析器。。-->
 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  
  <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property>
  
  <property name="suffix" value=".ftl" />
  <property name="contentType" value="text/html;charset=utf-8" />
  <property name="exposeRequestAttributes" value="true" />
  <property name="exposeSessionAttributes" value="true" />
  <property name="exposeSpringMacroHelpers" value="true" />
 </bean>
 exposeRequestAttributes  exposeSessionAttributes两个属性都被设置为true。结果是请求和会话属性都被复制到模板的属性集中,可以使用FreeMarker的表达式语言来访问并显示。

使用这些宏,必须设置FreeMarkerViewResolverexposeSpringMacroHelpers属性为true

然后controller的的内容如下:

@Controller
@RequestMapping("addStudent.do")
public class StudentControl {

 @Autowired
 private StudentService studentService;

 @RequestMapping(params = "method=add")
 public String addStudent(HttpServletRequest request,ModelMap model,Student student) throws IOException, TemplateException {

  studentService.addStudent(student);
         List<Student> list = studentService.findStudentAll();
  
  model.addAttribute("studentlist", list);//request保存这个对象
  return "student";
 }

在controller中保持了studentlist(存储在request中)

 

在freemarker中
      <table>
      <tr><td>index</td><td>username</td><td>password</td><td>id</td></tr>
      <#list studentlist as student> 
       <tr><td>${student_index}</td><td>${student.user?if_exists}</td><td>${student.psw?if_exists}</td><td>${student.id?if_exists}</td</tr>
      </#list>
      </table>

 

即可输入studentlist 内容,注意如果数据库为空没有加?if_exits是不行的,

 

如果提交表单中有日期格式的话要做自己的属性编辑器

注解方法如下:

@InitBinder
 public void initBinder(WebDataBinder binder, WebRequest request) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class,
            new CustomDateEditor(dateFormat, false));//注册个人编辑器。
       // binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
    }


原创粉丝点击