在上一篇文章中 ,我向您展示了如何使用Spring控制器处理纯HTML表单。 但是处理表单的更强大的方法是使用Spring的@ModelAttribute及其spring:form标签。 我将向您展示如何通过修改上一篇文章的项目设置从这里开始。 我们将简单地修改Comment表单和控制器以使用此功能。

在同一项目中,将src/webapp/comment.jsp视图文件修改为:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags/form" %>
<spring:form modelAttribute="comment"><table><tr><td><spring:textarea path="text" rows="20" cols="80"/></td></tr><tr><td colspan="2"><input type="submit" value="Post"/></td></tr></table>
</spring:form>

现在,该视图使用spring:form标记而不是纯HTML来呈现注释表单。 我在这里仅向您显示了一个元素,但是spring:form标记库还附带了所有匹配HTML表单元素,可帮助您快速绑定数据并呈现表单。 提交时,这将自动触发CommentController 。 我们将需要对其进行修改以捕获表单。

package springweb.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import springweb.data.Comment;
import springweb.data.CommentService;import javax.servlet.http.HttpServletRequest;
import java.util.List;@Controller
public class CommentController {@Autowiredprivate CommentService commentService;@RequestMapping(value="/comments")public ModelAndView comments() {List<Comment> comments = commentService.findComments();ModelAndView result = new ModelAndView("/comments");result.addObject("comments", comments);return result;}@ModelAttribute("comment")public Comment createFormModelAttribute() {return Comment.create("");}@RequestMapping(value="/comment")public String comment() {return "comment";}@RequestMapping(value="/comment", method = RequestMethod.POST)public ModelAndView postComment(HttpServletRequest req,@ModelAttribute("comment") Comment comment) {String fromUrl = req.getRequestURI();String user = req.getRemoteUser();String userIp = req.getRemoteAddr();comment.setFromUserIp(userIp);comment.setFromUser(user);comment.setFromUrl(fromUrl);commentService.insert(comment);ModelAndView result = new ModelAndView("comment-posted");result.addObject("comment", comment);return result;}
}

与旧控制器相比,该控制器的不同之处在于我们将@ModelAttribute与一个form对象一起使用(或Spring称为command对象)。我们可以为其命名,在这里我将其称为comment 。 它只是一个Java POJO类,没什么特别的。 但是它用于捕获所有表单输入,然后传递给Controller,这称为数据绑定。 请注意,当您首先请求表单视图时,它将通过createFormModelAttribute()方法进行实例化。 如果您用文本预先填充了pojo,它将自动以表格形式显示! 当用户提交时,控制器将使用postComment()方法进行处理,并且再次使用新的表单输入来填充表单对象以进行处理。 这使您可以使用纯对象样式的表单,并且在许多方面,与纯HTML表单相比,它更短,更简洁。

Spring MVC表单处理有很多。 一种强大的功能是它可以帮助您组织form对象验证并收集错误消息。 Spring还可以帮助您本地化错误消息文本等。您可以阅读有关其参考文档的更多信息。

参考: A Programmer's Journal博客上的JCG合作伙伴 Zemian Deng 探索了带有Spring Form Tag的Spring Controller 。

翻译自: https://www.javacodegeeks.com/2013/11/exploring-spring-controller-with-spring-form-tag.html

使用Spring Form标签探索Spring Controller相关推荐

  1. spring form标签的使用

    文章目录 前言 一.spring form 标签和JSRxxx数据格式验证 二.spring表单 标签分类.属性 1.标签类别 2.标签属性 三. JSRxxx约束 四.结合JSRXXX约束使用步骤 ...

  2. jstl视图_使用JSTL视图探索Spring Controller

    jstl视图 让我们通过对Spring MVC的Controller开发的更多探索来改进我们以前的Spring JDBC应用程序 . 我将展示另一种编写新的Controller的练习,该Control ...

  3. 使用JSTL视图探索Spring Controller

    让我们通过对Spring MVC的Controller开发的更多探索来改进以前的Spring JDBC应用程序 . 我将展示另一种编写新的Controller的练习,该Controller处理HTML ...

  4. Spring MVC-05循序渐进之数据绑定和form标签库(下) 实战从0到1

    概述 功能概述 搭建SpringMVC Maven工程 pom.xml 部署描述符web.xml 配置Spring MVC配置文件 日志配置文件 Domain类 Controller类 Service ...

  5. 绝了!这款工具让 Spring Boot 不在需要 Controller、Service、DAO、Mapper 了

    ‍ 来源:my.oschina.net/ta8210/blog/3234639 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得使用者无需开发任何代码就配置一个满 ...

  6. return error怎么定义_这一次搞懂Spring自定义标签以及注解解析原理

    自定义标签解析原理 在上一篇分析默认标签解析时看到过这个类DefaultBeanDefinitionDocumentReader的方法parseBeanDefinitions:拉勾IT课小编为大家分解 ...

  7. Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(三)-Controller 解析

    在之前的博客中Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(一),己经对 Spring MVC 的框架做了详细的分析,但是有一个问题,发现举的例子不常用,因为我们在实际开发项 ...

  8. Spring - @ControllerAdvice + @ExceptionHandler全局处理Controller层异常(转)

    Spring - @ControllerAdvice + @ExceptionHandler全局处理Controller层异常(转) 参考文章: (1)Spring - @ControllerAdvi ...

  9. Spring 配置标签——util标签

    Spring 配置标签--util标签 一.配置applicationContext.xml <beans xmlns="http://www.springframework.org/ ...

最新文章

  1. Editplus下载、安装并最佳配色方案(强烈推荐)
  2. python访问数据库如何解决高并发_怎样解决数据库高并发的问题
  3. 为Apache动态增加模块
  4. PySide2 基础入门-创建实例窗口(详细解释)
  5. Linux学习笔记04
  6. 提高服务器并发量,有关系统配置的常规方法
  7. C++与C#混合编程
  8. 后缀为frm是什么文件_Shell 点文件可以为你做点什么
  9. php对学历要求较低,学历低学起php来难不难-PHP问题
  10. LeetCode:226. 翻转二叉树
  11. 梦如果实现以后。。。。。。
  12. 马克龙宣布15亿欧元投资AI,DeepMind拥吻巴黎
  13. RHEL 5.1 下面安装tftp服务
  14. 数据库基础知识(面试)
  15. 可以拍c语言答案的软件下载,c语言二级考试题库app下载-C语言二级考试题库 安卓版v2.3-PC6安卓网...
  16. win10易升计算机丢失,易升win10害死人|win10易升怎么关闭
  17. 解决无法删除文件夹的情况:文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开...
  18. 一些有趣的Shodan搜索
  19. python 二进制与十进制之间的转换
  20. VVC spec中文翻译

热门文章

  1. 前端wxml取后台js变量值_这些鲜为人知的前端冷知识,你都GET了吗?
  2. 使用maven聚合安装多个maven工程到本地仓库报错的解决方法:child module pom.xml does not exist
  3. jvm 启动参数设置
  4. spring(4)面向切面的Spring(AOP)
  5. 关于bochs用X11启动的说明
  6. jdk 版本和内部版本对应_JDK 14 Rampdown:内部版本27
  7. swarm 容器_Oracle应用容器云上的WildFly Swarm
  8. java cuba_CUBA平台–新的Java企业应用程序框架
  9. intellij注释模板_IntelliJ中的实时模板
  10. 在15分钟内使用Spring Boot和Spring Security构建一个Web应用程序