SpringMVC form 学习(二)——form元素使用及值保存

本文介绍如何通过form表单结构实现员工信息的输入、验证及保存过程,包括页面跳转、表单元素配置与后台接收处理。

form学习:以保存信息为例

1.controller中载入保存信息页面,传递planHeadquarters对象

/**
	 * 载入员工添加页面
	 * 
	 * @param planId
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/load/add")
	public String toLoadAdd(Model model) {
		PlanHeadquarters planHeadquarters=new PlanHeadquarters();
		model.addAttribute("planHeadquarters",planHeadquarters);
		return "/ecs/command/plan/add";
	}


2.jsp中form结构

<form:form id="tableForm" commandName="planHeadquarters">//planHeadquarters为controller传递过来的对象<pre name="code" class="html">
<table class="dialog-box"> <tr> <th width="70px;"><label class="danger">  姓名: </label> </th> <td width="120px;"><form:input id="name" path="staff.name" class="validate[required]"/> </td> <th width="70px;">  性别: </th> <td> <form:select id="sex" path="staff.gender" style="width:100%;"> <option value="0">男</option> <option value="1">女</option></form:select> </td> </tr> <tr> <th width="70px;"><label class="danger">  单位: </label> </th> <td colspan="3"><form:input id="emOrganization" path="staff.emOrganization" style="width:352px;" class="validate[required]"/> </td> </tr> <tr> <th><label class="danger">  手机: </label> </th> <td><form:input id="mobilePhone" path="staff.mobilePhone" class="validate[required,custom[mobilephone]]"/> </td> <th>座机: </th> <td><form:input id="officePhone" path="staff.officePhone"/> </td> </tr> <tr> <th>职位: </th> <td><form:input id="position" path="staff.position"/> </td> <th>一级组: </th> <td><form:input path="firstGroup"/> </td> </tr> <tr> <th>二级组: </th> <td><form:input path="sedGroup"/> </td> <th>末级组: </th> <td><form:input path="lastGroup"/> </td> </tr> <tr> <th>  职责: </th> <td colspan="3"> <form:input path="duty" style="width:352px;"/> </td> </tr> <tr> <th style="height:30px;">  其他: </th> <td colspan="3"><input type="radio" name="select" value="accident" style="margin-left:5px;"/> 本次事件临时成员 <input type="radio" name="select" value="plan" style="margin-left:25px;"> 保存至该预案 </td> </tr> </table> </form:form>


3.点击保存返回controller

/**
	 * 保存职员
	 * 
	 * @param name
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/load/saveStaff")
	public String saveStaff(Model model,PlanHeadquarters planHeadquarters,  //planHeadquarters将自动组装成对象返回到controller
			@RequestParam(value = "select", defaultValue = "") String select) {
		
		return null;
	}







### SpringBoot 整合 SpringMVC 标签库 并完成数据校验 #### 1. 引入必要的依赖 为了在 Spring Boot 中使用 Spring MVC 的标签库以及实现数据校验功能,需要引入 `spring-boot-starter-web` 和 Hibernate Validator 相关的依赖。以下是 Maven 配置: ```xml <dependencies> <!-- Spring Boot Web Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Hibernate Validator for data validation --> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency> </dependencies> ``` 通过引入 `spring-boot-starter-web`,Spring Boot 自动集成了 Spring MVC 框架及其相关组件[^1]。 --- #### 2. 创建控制器类并启用数据校验 下面是一个简单的控制器示例,展示如何利用 Spring MVC 提供的数据绑定和校验机制来验证表单提交的内容。 ```java import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import javax.validation.Valid; @Controller public class UserController { @GetMapping("/form") public String showForm(User user) { return "user-form"; // 映射到 Thymeleaf 或 JSP 页面 } @PostMapping("/submit") public String submitForm(@Valid User user, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return "user-form"; // 如果有错误,则重新渲染表单页面 } return "success"; // 表单成功提交后的跳转页面 } } ``` 在此代码片段中,`@Valid` 注解用于触发参数对象上的约束条件检查,而 `BindingResult` 则捕获校验过程中产生的任何错误信息[^3]。 --- #### 3. 定义实体类并添加校验注解 定义一个包含字段级校验规则的 Java 实体类如下所示: ```java import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; public class User { @NotBlank(message = "用户名不能为空") // 用户名必填 private String username; @Size(min = 6, max = 20, message = "密码长度应在6至20位之间") // 密码长度范围限制 private String password; // Getter and Setter methods omitted for brevity public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 此部分展示了如何借助 JSR 380(Bean Validation API)中的标准注解对输入数据实施基本的合法性检测[^4]。 --- #### 4. 前端视图模板 假设我们正在使用 Thymeleaf 渲染前端界面,以下是一份 HTML 文件样例,其中嵌套了 Spring MVC 的 `<form:>` 标签支持动态生成带属性绑定的功能性表单控件。 ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>User Form</title> </head> <body> <h2>注册新用户</h2> <form th:action="@{/submit}" method="post" th:object="${user}"> <label>Username:</label><br/> <input type="text" th:field="*{username}"/> <span style="color:red;" th:if="${#fields.hasErrors('username')}" th:errors="*{username}">Error Message</span><br/><br/> <label>Password:</label><br/> <input type="password" th:field="*{password}"/> <span style="color:red;" th:if="${#fields.hasErrors('password')}" th:errors="*{password}">Error Message</span><br/><br/> <button type="submit">Submit</button> </form> </body> </html> ``` 这里运用到了 `${}` EL 表达式语法结合 Thymeleaf 特定扩展指令实现了双向数据同步及错误提示显示效果[^2]。 --- #### 5. 启用国际化资源文件(可选) 为了让应用程序具备多语言切换能力,还可以额外配置 messages.properties 文件存储消息键配对关系,并调整 Controller 层逻辑读取对应的语言版本文案反馈给客户端。 例如,在 resources/messages_en_US.properties 中写入: ``` NotEmpty.user.username=The field 'User Name' is required. Size.user.password=Password must be between {min} and {max} characters long. ``` 随后需确保项目上下文中加载该 bundle 资源路径即可生效。 --- ### 总结 以上内容详尽阐述了一个完整的解决方案链路——从后端服务层接口设计到底层持久化操作封装再到最终呈现于浏览器端交互体验优化全过程。不仅满足题目关于整合 SpringMVC 标签库的要求同时也兼顾实际开发场景下常见的需求点如国际化的处理方式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值