Spring MVC表单标签库、Spring MVC国际化

Spring MVC表单标签库

1、Student 实体类

package com.southwind.entity2;
import lombok.Data;
@Data
public class Student {
 private Integer id;
 private String name;
 private Integer age;
 private String gender; }

2、Handler

package com.southwind.controller;
import com.southwind.entity2.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/student")
public class StudentHandler {
 @RequestMapping("/get")
 public String get(Model model){
 Student student = new Student();
 student.setId(1);
 student.setName("张三");
 student.setAge(22);
 student.setGender("男");
 model.addAttribute("student",student);
 return "student";
 }
}

3、JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html> <head>
 <title>Title</title>
</head> <body>
 <h1>修改学⽣信息</h1>
 <form action="" method="post">
 学⽣编号:<input type="text" name="id" value="${student.id}" readonly/>
<br/>
 学⽣姓名:<input type="text" name="name" value="${student.name}"/><br/>
 学⽣年龄:<input type="text" name="age" value="${student.age}"/><br/>
 学⽣性别:<input type="text" name="gender" value="${student.gender}"/>
<br/>
 <input type="submit" value="提交"/>
 </form>
</body>
</html>

使用 Spring MVC 表单标签可以直接将业务数据绑定到 JSP 表单中,非常简单。

表单标签库的使用

1、JSP 页面导入 Spring MVC 表单标签库。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

2、将 form 表单与业务数据进行绑定,通过 modelAttribute 属性完成绑定,将 modelAttribute 的值设置为控制器向 model 对象存值时的 name 即可。

<form:form modelAttribute="student" action="/student/update" method="post">
 学⽣编号:<form:input path="id"></form:input><br/>
 学⽣姓名:<form:input path="name"></form:input><br/>
 学⽣年龄:<form:input path="age"></form:input><br/>
 学⽣性别:<form:input path="gender"></form:input><br/>
 <input type="submit" value="提交"/>
</form:form>

常用标签

1、form 标签

<form:form modelAttribute="student" method="post"></form:form>

渲染的是 HTML 中的 ,通过 modelAttribute 属性绑定具体的业务数据。

2、input 标签

<form:input path="name"></form:input>

渲染的是 HTML 中的 ,from 标签绑定的是业务数据,input 标签绑定的是业务数据中的属性值,通过 path 与业务数据的属性名对应,并支持级联。

package com.southwind.entity2;
import lombok.Data;
@Data
public class Address {
 private Integer id;
 private String name; }
package com.southwind.entity2;
import lombok.Data;
@Data
public class Student {
 private Integer id;
 private String name;
 private Integer age;
 private String gender;
 private Address address; }
@RequestMapping("/get")
public String get(Model model){
 Student student = new Student();
 student.setId(1);
 student.setName("张三");
 student.setAge(22);
 student.setGender("男");
 Address address = new Address();
 address.setId(1);
 address.setName("科技路");
 student.setAddress(address);
 model.addAttribute("student",student);
 return "student2"; }
<form:form modelAttribute="student" action="/student/update" method="post">
 学⽣编号:<form:input path="id"></form:input><br/>
 学⽣姓名:<form:input path="name"></form:input><br/>
 学⽣年龄:<form:input path="age"></form:input><br/>
 学⽣性别:<form:input path="gender"></form:input><br/>
 学⽣地址:<form:input path="address.name"></form:input><br/>
 <input type="submit" value="提交"/>
</form:form>

3、password 标签

<form:password path="password"></form:password>

渲染的是 HTML 中的 ,通过 path 与业务数据的属性名对应,password 标签的值不会在页面显示。

4、checkbox 标签

<form:checkbox path="hobby" value="读书"></form:checkbox>

渲染的是 HTML 中的 ,通过 path 与业务数据的属性名对应,可以绑定boolean、数组和集合。如果绑定 boolean 类型的变量,该变量值为 true,则表示选中,false 表示不选中

student.setFlag(true);
checkbox:<form:checkbox path="flag" value="1"></form:checkbox>

如果绑定数组和集合类型,集合中的元素等于 checkbox 的 value 值,则该项选中,否则不选中。

student.setHobby(Arrays.asList("读书","看电影","旅⾏"));
<form:checkbox path="hobby" value="读书"></form:checkbox>读书<br/>
<form:checkbox path="hobby" value="看电影"></form:checkbox>看电影<br/>
<form:checkbox path="hobby" value="打游戏"></form:checkbox>打游戏<br/>
<form:checkbox path="hobby" value="听⾳乐"></form:checkbox>听⾳乐<br/>
<form:checkbox path="hobby" value="旅⾏"></form:checkbox>旅⾏<br/>

5、checkboxs 标签

<form:checkboxs items="${student.hobby}" path="selectHobby"></form:checkboxs>

渲染的是 HTML 中的⼀组 ,这⾥需要结合 items 和 path 两个属性来使用,items 绑定被遍历的集合或数组,path 绑定选中的集合或数组,items 是全部选型,path 为默认选中的选型。

student.setHobby(Arrays.asList("读书","看电影","打游戏","听⾳乐","旅⾏"));
student.setSelectHobby(Arrays.asList("读书","看电影"));
<form:checkboxes path="selectHobby" items="${student.hobby}">
</form:checkboxes>

需要注意的是 path 可以直接绑定业务数据的属性,items 则需要通过 EL 表达式从域对象中取值,不能直接写属性名。

6、radiobutton 标签

<form:radiobutton path="radioId" value="0"></form:radiobutton>

渲染的是 HTML 中的⼀个 ,绑定的数据与标签的 value 值相等为选中状态,否则为不选中状态。

student.setRadioId(1);
<form:radiobutton path="radioId" value="0"></form:radiobutton><form:radiobutton path="radioId" value="1"></form:radiobutton>

7、radiobuttons 标签

<form:radiobuttons items="${student.grade}" path="selectGrade">
</form:radiobuttons>

渲染的是 HTML 中的⼀组 ,这⾥需要结合 items 和 path 两个属性来使用,items 绑定被遍历的集合或数组,path 绑定被选中的值,items 是全部选型,path 为默认选中的选型。

Map<Integer,String> gradeMap = new HashMap<>();
gradeMap.put(1,"⼀年级");
gradeMap.put(2,"⼆年级");
gradeMap.put(3,"三年级");
gradeMap.put(4,"四年级");
gradeMap.put(5,"五年级");
gradeMap.put(6,"六年级");
student.setGradeMap(gradeMap);
student.setSelectGrade(3);

<form:radiobuttons path="selectGrade" items="${student.gradeMap}">
</form:radiobuttons>

8、select 标签

<form:select items="${student.citys}" path="selectCity"/>

渲染的是 HTML 中的⼀个 ,这⾥需要结合 items 和 path 两个属性来使用,items 绑定被遍历的集合或数组,path 绑定被选中的值,用法与 radiobuttons 标签⼀致。

Map<Integer,String> cityMap = new HashMap<>();
cityMap.put(1,"北京");
cityMap.put(2,"上海");
cityMap.put(3,"⼴州");
cityMap.put(4,"深圳");
student.setCityMap(cityMap);
student.setSelectCity(2);

<form:select path="selectCity" items="${student.cityMap}"></form:select>

9、form:select 标签结合 form:options 使y用
form:select 只定义 path 属性,在 form:select 标签内部添加⼀个子标签 form:options,设置 items 属性。

<form:select path="selectCity">
 <form:options items="${student.cityMap}"></form:options>
</form:select>

10、form:select 标签结合 form:option 使用
form:select 定义 path 属性,给每⼀个 form:option 设置 value 属性,path 与哪个 value 相等,该项默认选中。

<form:select path="selectCity">
 <form:option value="1">⻄安</form:option>
 <form:option value="2">杭州</form:option>
 <form:option value="3">成都</form:option>
</form:select>

Spring MVC国际化

国际化是指同⼀个应用程序在不同语言设置的浏览器中,自动显示不同的语言,Spring MVC 对国际化操作做了很好的集成,只需要简单配置即可实现国际化。
1、springmvc.xml 配置。

<!-- 国际化资源⽂件 -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSour
ce">
 <!-- 多语⾔配置⽂件放在根路径,以 language 开头 -->
 <property name="basename" value="classpath:language"></property>
 <property name="useCodeAsDefaultMessage" value="true"></property>
</bean>
<!-- 拦截器 -->
<mvc:interceptors>
 <bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
 <property name="paramName" value="lang"></property>
 </bean>
</mvc:interceptors>
<!-- 配置 SessionLocaleResolver,动态获取 Locale 对象,存⼊ Session -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>

2、创建国际化资源⽂件 language_en_US.properties,language_zh_CN.properties,分别存储英文和中文资源。

language.cn = \u4E2D\u6587
language.en = English
info = login
username = username
password = password
repassword = repassword
tel = tel
email = email
submit = submit
reset = reset
language.cn = \u4E2D\u6587
language.en = English
info = \u767B\u9646
username = \u7528\u6237\u540D
password = \u5BC6\u7801
repassword = \u786E\u8BA4\u5BC6\u7801
tel = \u7535\u8BDD
email = \u7535\u5B50\u90AE\u7BB1
submit = \u63D0\u4EA4
reset = \u91CD\u7F6E

3、Handler

package com.southwind.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/inter")
public class InterHandler {
 @GetMapping("/index")
 public String index(){
 return "inter";
 }
}

4、JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html> <head>
 <title>Title</title>
</head> <body>
 <a href="index?lang=en_US">English</a>
 <a href="index?lang=zh_CN">中⽂</a>
 <h1><spring:message code="info"></spring:message></h1>
 <form>
 <spring:message code="username"/>:<input type="text"/><br/>
 <spring:message code="password"/>:<input type="password"/><br/>
 <spring:message code="repassword"/>:<input type="password"/><br/>
 <spring:message code="tel"/>:<input type="text"/><br/>
 <spring:message code="email"/>:<input type="text"/><br/>
 <input type="submit" value="<spring:message code="submit"/> "/>
 <input type="reset" value="<spring:message code="reset"/> "/>
 </form>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

走不尽的心路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值