程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

SpringMVC:标签库

发布于2021-06-14 09:52     阅读(415)     评论(0)     点赞(3)     收藏(5)


SpringMVC提供了两套标签库,这两套标签库的TLD文件位于spring-webmvc-x.x.x.RELEASE.jar压缩包的/META-INF/路径下,文件名分别为:spring.tld和spring-form.tld。

  • spring.tld定义的标签库:主要用于输出错误信息,设置主题和输出国际化。
  • spring-form.tld定义的标签库:主要用于将表单域与model属性进行绑定。

1,spring-form.tld定义的标签库 

1.1,form标签与普通表单域标签

form标签及以下普通表单域标签都位于spring-form.tld文件中,为了使用这些标签,需要先使用taaglib指令导入form标签库。例如:

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

指令中的uri指定标签库的URI,该URI由标签库的TLD文件定义(由spring-form.tld文件定义),相当于标签库的唯一标识,因此不能更改。prefix指定标签库的短名前缀,该属性值可以随意改变,但一般建议与标签库的TLD文件中的<short-name.../>元素保持一致。

form标签用于生成HTML的<form.../>标签,在使用form标签时,可指定如下属性:

  • cssClass:相当于指定HTML的class属性。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出内容执行HTML转义。
  • methodParam:指定通过哪个参数来表示GET、POST之外的其他请求。默认值为_method,表明使用_method参数。
  • modelAttribute:表明该表单域默认绑定哪个model属性,默认值为command。

此外,form标签还支持大量HTML的标准属性,比如enctype、method、onclick等,这些属性与HTML的<form.../>标签中同名的属性完全一样。

button标签用于生成HTML的type为submit、reset或button的<input.../>标签,在使用button标签时没有额外的属性可指定,它支持HTML的<input.../>标签的所有标准属性。

hidden标签用于生成HTML的type为hidden的<input.../>标签。hidden标签除了支持HTML的<input.../>标签的所有标准属性,还支持如下额外的属性:

  • htmlEscape:指定是否对输出值进行HTML转义。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将表单域的path属性指定为name。

input标签用于生成HTML的type为text的<input.../>标签。input标签除支持HTML的<input.../>标签的所有标准属性外,还支持如下额外属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将该表单域的path属性指定为name。

password标签用于生成HTML的type为password的<input.../>标签。password标签除了支持HTML的<input.../>标签的所有标准属性,还支持如下额外属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将该表单域的path属性指定为name。

textarea标签用于生成HTML的<textarea.../>标签。textarea标签除了支持HTML的<input.../>标签的所有标准属性,还支持如下额外属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将该表单域的path属性指定为name。

这些表单域标签支持的属性大同小异,主要就是使用path属性来绑定model属性的属性。

  1. @Controller
  2. public class BookController {
  3. // 依赖注入bookService组件
  4. @Resource(name = "bookService")
  5. private BookService bookService;
  6. @GetMapping("/bookForm")
  7. public String bookForm(Book b,Model model) {
  8. b.setName("疯狂Java讲义");
  9. b.setPrice(50);
  10. b.setDomain("crazyit.org");
  11. b.setDescription("简单描述");
  12. System.out.println(model.asMap());
  13. return "bookForm";
  14. }
  15. // @PostMapping指定该方法处理/addBook请求
  16. @PostMapping("/addBook")
  17. public String add(Book book, Model model) throws Exception {
  18. bookService.addBook(book);
  19. model.addAttribute("tip", book.getName() + "图书添加成功!");
  20. return "success";
  21. }
  22. }
  1. <div class="container">
  2. <img src="${pageContext.request.contextPath}/imgs/logo.gif"
  3. class="rounded mx-auto d-block"><h4>添加图书</h4>
  4. <form:form method="post" action="addBook" modelAttribute="book">
  5. <form:hidden id="domain" path="domain"/>
  6. <div class="form-group row">
  7. <form:label path="name" class="col-sm-3 col-form-label">图书名:</form:label>
  8. <div class="col-sm-9">
  9. <form:input type="text" id="name" path="name"
  10. class="form-control" placeholder="请输入图书名"/>
  11. </div>
  12. </div>
  13. <div class="form-group row">
  14. <form:label path="price" class="col-sm-3 col-form-label">价格:</form:label>
  15. <div class="col-sm-9">
  16. <form:input type="number" id="price" path="price"
  17. class="form-control" placeholder="请输入价格" /> <!-- ① -->
  18. </div>
  19. </div>
  20. <div class="form-group row">
  21. <form:label path="author" class="col-sm-3 col-form-label">作者:</form:label>
  22. <div class="col-sm-9">
  23. <form:input type="text" id="author" path="author"
  24. class="form-control" placeholder="请输入作者名"/>
  25. </div>
  26. </div>
  27. <div class="form-group row">
  28. <form:label path="description" class="col-sm-3 col-form-label">描述信息:</form:label>
  29. <div class="col-sm-9">
  30. <form:textarea type="text" id="description" path="description"
  31. class="form-control" placeholder="请输入描述信息"/>
  32. </div>
  33. </div>
  34. <div class="form-group row">
  35. <div class="col-sm-6 text-right">
  36. <form:button type="submit" class="btn btn-primary">添加</form:button>
  37. </div>
  38. <div class="col-sm-6">
  39. <form:button type="reset" class="btn btn-danger">重设</form:button>
  40. </div>
  41. </div>
  42. </form:form>
  43. </div>

1.2,radiobutton和radiobuttons标签

radiobutton标签用于生成HTML的type为radio的<input.../>标签。radiobutton标签除了支持HTML的<input.../>标签的所有标准属性外,还支持如下额外属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。
  • label:指定该单选按钮的标签。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将该表单域的path属性指定为name。

当radiobuttons标签绑定的model属性的属性值与该标签的value属性值相等时,该单选按钮就会自动处于选中状态。

radiobuttons标签用于生成多个HTML的type为radio的<input.../>标签。radiobuttons标签除支持普通radiobutton标签的全部属性之外,还支持如下额外属性:

  • delimiter:指定单选按钮之间的分隔符。
  • element:指定用于包围每个单选按钮的HTML元素,默认是<span.../>元素。
  • items:指定一个集合、Map或数组属性,每个元素生成一个单选按钮。
  • itemLabel:指定集合元素或数组元素的属性名,该属性的值将作为单选按钮的label。
  • itemValue:指定集合元素或数组元素的属性名,该属性的值将作为单选按钮的value值。
  1. @Controller
  2. public class EmployeeController {
  3. @GetMapping("/employeeForm")
  4. public String employeeForm(@ModelAttribute("employee") Employee emp,
  5. Model model) {
  6. // 初始化employee属性
  7. emp.setName("孙悟空");
  8. emp.setDiploma("大专");
  9. emp.setCity(1);
  10. HashMap citys = new HashMap();
  11. citys.put(1,"花果山");citys.put(2,"福陵山");citys.put(3,"积雷山");
  12. // 为model添加一个citys属性,该属性的值是一个Map
  13. model.addAttribute("citys", citys);
  14. return "employeeForm";
  15. }
  16. @PostMapping("/addEmployee")
  17. public String addEmployee(Employee emp, Model model) {
  18. System.out.println("--添加员工:" + emp);
  19. model.addAttribute("tip", "添加员工成功");
  20. return "success";
  21. }
  22. }
  1. <form:form method="post" action="addEmployee" modelAttribute="employee">
  2. <div class="form-group row">
  3. <form:label path="name" class="col-sm-3 col-form-label">员工名:</form:label>
  4. <div class="col-sm-9">
  5. <form:input type="text" id="name" path="name"
  6. class="form-control" placeholder="请输入员工名"/>
  7. </div>
  8. </div>
  9. <div class="form-group row">
  10. <form:label path="diploma" class="col-sm-3 col-form-label">学历:</form:label>
  11. <div class="col-sm-9">
  12. <form:radiobutton path="diploma"
  13. value="大专" label="大专"/>
  14. <form:radiobutton path="diploma"
  15. value="本科" label="本科"/>
  16. <form:radiobutton path="diploma"
  17. value="硕士以上" label="硕士及以上"/>
  18. </div>
  19. </div>
  20. <div class="form-group row">
  21. <form:label path="city" class="col-sm-3 col-form-label">居住城市:</form:label>
  22. <div class="col-sm-9">
  23. <form:radiobuttons path="city" items="${citys}"
  24. class="form-check-input" element="div"/>
  25. </div>
  26. </div>
  27. <div class="form-group row">
  28. <div class="col-sm-6 text-right">
  29. <form:button type="submit" class="btn btn-primary">添加</form:button>
  30. </div>
  31. <div class="col-sm-6">
  32. <form:button type="reset" class="btn btn-danger">重设</form:button>
  33. </div>
  34. </div>
  35. </form:form>

1.3,checkbox和checkboxes标签

checkbox标签用于生成HTML的type为checkbox的<input../>标签。checkbox标签除支持HTML的<input.../>标签的所有标准属性外,还支持如下额外属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。
  • label:指定该复选框的标签。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将该表单域的path属性指定为name。

当checkbox标签绑定的model属性的属性值与该标签的value属性值相等时,该复选框就会自动处于选中状态。

checkboxes标签用于生成多个HTML的type为checkbox的<input.../>标签。checkboxes标签除支持HTML的<input.../>标签的所有标准属性外,还支持如下额外属性:

  • delimiter:指定单选按钮之间的分隔符。
  • element:指定用于包围每个单选按钮的HTML元素,默认是<span.../>元素。
  • items:指定一个集合、Map或数组属性,每个元素生成一个单选按钮。
  • itemLabel:指定集合元素或数组元素的属性名,该属性的值将作为单选按钮的label。
  • itemValue:指定集合元素或数组元素的属性名,该属性的值将作为单选按钮的value值。
  1. @Controller
  2. public class FinanceController{
  3. @GetMapping("/financeForm")
  4. public String financeForm(@ModelAttribute("finance") Finance finance, Model model){
  5. // 初始化finance属性
  6. finance.setName("牛魔王");
  7. finance.setAssets(List.of("股票", "债券", "房产"));
  8. finance.setCountries(List.of("086", "001"));
  9. var countries = List.of(new Country("001", "美国"),
  10. new Country("086", "中国"),
  11. new Country("061", "澳大利亚"));
  12. // 为model添加一个countries属性,该属性的值是一个List<Country>对象
  13. model.addAttribute("countries", countries);
  14. return "financeForm";
  15. }
  16. @PostMapping("/addFinance")
  17. public String addFinance(Finance finance, Model model){
  18. System.out.println("--添加财务信息:" + finance);
  19. model.addAttribute("tip", "添加财务成功");
  20. return "success";
  21. }
  22. }
  1. <form:form method="post" action="addFinance" modelAttribute="finance">
  2. <div class="form-group row">
  3. <form:label path="name" class="col-sm-3 col-form-label">客户名:</form:label>
  4. <div class="col-sm-9">
  5. <form:input type="text" id="name" path="name"
  6. class="form-control" placeholder="请输入客户名"/>
  7. </div>
  8. </div>
  9. <div class="form-group row">
  10. <form:label path="assets" class="col-sm-3 col-form-label">资产组成:</form:label>
  11. <div class="col-sm-9">
  12. <form:checkbox path="assets"
  13. value="股票" label="股票"/>
  14. <form:checkbox path="assets"
  15. value="基金" label="基金"/>
  16. <form:checkbox path="assets"
  17. value="债券" label="债券"/>
  18. <form:checkbox path="assets"
  19. value="股份" label="股份"/>
  20. <form:checkbox path="assets"
  21. value="房产" label="房产"/>
  22. </div>
  23. </div>
  24. <div class="form-group row">
  25. <form:label path="countries" class="col-sm-3 col-form-label">居住国家:</form:label>
  26. <div class="col-sm-9">
  27. <form:checkboxes path="countries" items="${countries}"
  28. element="div" itemValue="code" itemLabel="name"
  29. class="form-check-input"/>
  30. </div>
  31. </div>
  32. <div class="form-group row">
  33. <div class="col-sm-6 text-right">
  34. <form:button type="submit" class="btn btn-primary">添加</form:button>
  35. </div>
  36. <div class="col-sm-6">
  37. <form:button type="reset" class="btn btn-danger">重设</form:button>
  38. </div>
  39. </div>
  40. </form:form>

 1.4,select和option、options标签

select标签用于生成HTML的<select.../>标签,如果为该标签指定了items属性,该标签还能为HTML的<select.../>标签生成列表项。select标签除支持HTML的<select.../>标签的所有标准属性之外,还支持如下额外的属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。
  • path:指定将该标签绑定到model属性的哪个属性路径。比如希望将该表单域绑定到model中book属性的name属性,应该先将form标签的modelAttribute属性指定为book,再将该表单域的path属性指定为name。
  • items:指定一个集合、Map或数组属性,每个元素生成一个列表项。
  • itemLabel:指定集合元素或数组元素的属性名,该属性的值将作为列表项的label。
  • itemValue:指定集合元素或数组元素的属性名,该属性的值将作为列表项的value值。

option标签用于为HTML的<select.../>标签生成单个列表项。option标签除支持HTML的<select.../>标签的所有标准属性外,还支持如下额外的属性:

  • cssClass:相当于指定HTML的class属性。
  • cssErrorClass:相当于指定HTML的class属性;当该表单域的数据校验出现错误时,该class属性将会作用于显示校验错误的元素。
  • cssStyle:相当于指定HTML的style属性。
  • htmlEscape:指定是否对输出值进行HTML转义。

options标签用于为HTML的<select.../>标签生成多个列表项。options标签除支持与option标签相同的属性之外,还支持如下额外的属性:

  • items:指定一个集合、Map或数组属性,每个元素生成一个列表项。
  • itemLabel:指定集合元素或数组元素的属性名,该属性的值将作为列表项的label。
  • itemValue:指定集合元素或数组元素的属性名,该属性的值将作为列表项的value值。
  1. @Controller
  2. public class VacationController{
  3. @GetMapping("/vacationForm")
  4. public String vacationForm(@ModelAttribute("vacation") Vacation vacation, Model model){
  5. // 初始化vacation属性
  6. vacation.setName("猪八戒");
  7. vacation.setTransport("3");
  8. vacation.setCountries(List.of("086", "001"));
  9. var countries = List.of(new Country("001", "美国"),
  10. new Country("044", "英国"),
  11. new Country("061", "澳大利亚"));
  12. // 为model添加一个countries属性,该属性的值是一个List<Country>对象
  13. model.addAttribute("countries", countries);
  14. // 为model添加一个transports属性,该属性的值是一个Map<String, String>
  15. model.addAttribute("transports",
  16. Map.of("1", "火车", "2", "飞机", "3", "邮轮"));
  17. return "vacationForm";
  18. }
  19. @PostMapping("/addVacation")
  20. public String addVacation(Vacation vacation, Model model){
  21. System.out.println("--添加度假信息:" + vacation);
  22. model.addAttribute("tip", "添加度假成功");
  23. return "success";
  24. }
  25. }
  1. <form:form method="post" action="addVacation" modelAttribute="vacation">
  2. <div class="form-group row">
  3. <form:label path="name" class="col-sm-3 col-form-label">客户名:</form:label>
  4. <div class="col-sm-9">
  5. <form:input type="text" id="name" path="name"
  6. class="form-control" placeholder="请输入客户名"/>
  7. </div>
  8. </div>
  9. <div class="form-group row">
  10. <form:label path="transport" class="col-sm-3 col-form-label">交通方式:</form:label>
  11. <div class="col-sm-9">
  12. <form:select id="transport" path="transport"
  13. class="custom-select"
  14. items="${transports}"/>
  15. </div>
  16. </div>
  17. <div class="form-group row">
  18. <form:label path="countries" class="col-sm-3 col-form-label">意向国家</form:label>
  19. <div class="col-sm-9">
  20. <form:select id="countries" path="countries"
  21. multiple="multiple" class="custom-select">
  22. <form:option label="法国" value="034" />
  23. <form:option label="德国" value="049" />
  24. <optgroup label="英语国家">
  25. <form:options items="${countries}"
  26. itemValue="code" itemLabel="name" />
  27. </optgroup>
  28. </form:select>
  29. </div>
  30. </div>
  31. <div class="form-group row">
  32. <div class="col-sm-6 text-right">
  33. <form:button type="submit" class="btn btn-primary">添加</form:button>
  34. </div>
  35. <div class="col-sm-6">
  36. <form:button type="reset" class="btn btn-danger">重设</form:button>
  37. </div>
  38. </div>
  39. </form:form>

2,spring.tld定义的标签库 

为了使用spring.tld标签,需要先使用taglib指令导入标签库:

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

上面指令中的uri指定标签库的URI,该URI由标签库的TLD文件定义(由spring.tld文件定义),相当于标签库的唯一标识,因此不能更改。prefix指定标签库的短名前缀,该属性值可随意改变,但一般建议与标签库的TLD文件中的<short-name.../>元素保持一致。

2.1,htmlEscape和escapeBody标签

htmlEscape标签只支持一个defaultHtmlEscape属性,用于覆盖web.xml中defaultHtmlEscape参数的值;该标签设置的defaultHtmlEscape属性值仅对当前页面起作用。

如果想对页面中某一段内容执行转义,则可使用escapeBody标签,该标签支持如下两种属性:

  • htmlEscape:指定是否对HTML代码执行转义。
  • javaScriptEscape:指定是否对JS代码进行转义。
  1. <%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
  2. <!-- 导入Spring MVC的标签库 -->
  3. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)"/>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  9. <link rel="stylesheet" href="${pageContext.request.contextPath}/res/bootstrap-4.3.1/css/bootstrap.min.css">
  10. <script src="${pageContext.request.contextPath}/res/jquery-3.4.1.min.js">
  11. </script>
  12. <script src="${pageContext.request.contextPath}/res/bootstrap-4.3.1/js/bootstrap.min.js">
  13. </script>
  14. <title> escapeBody标签 </title>
  15. </head>
  16. <body>
  17. <div class="container">
  18. <div class="alert alert-primary">
  19. <spring:escapeBody htmlEscape="true">
  20. <ul>
  21. <li>疯狂Java讲义</li>
  22. </ul>
  23. </spring:escapeBody>
  24. </div>
  25. <div class="alert alert-primary">
  26. <spring:escapeBody htmlEscape="true" javaScriptEscape="true">
  27. <ul>
  28. <li>疯狂Java讲义</li>
  29. </ul>
  30. </spring:escapeBody>
  31. </div>
  32. </div>
  33. </body>
  34. </html>
  1. <ul> <li>疯狂Java讲义</li> </ul>
  2. \n <ul>\n <li>疯狂Java讲义<\/li>\n <\/ul>\n

上面程序中<spring:escapeBody.../>标签对它包含的一段HTML代码执行转义。由于值指定了htmlEscape="true",因此该标签只对HTML代码执行转义:主要就是对尖括号执行转义。

上面程序中<spring:escapeBody.../>标签对它包含的一段HTML代码执行转义。由于值指定了htmlEscape="true"和javaScriptEscape="true",这意味着该标签会同时对HTML代码和JS代码执行转义:不仅会对尖括号执行转义,还会对代码中的换行、空格等字符执行转义。

2.2,url和param标签

url标签用于构建一个URL,使用它可以非常方便地构建绝对地址,避免应用重构时出现引用资源丢失的问题。之前使用:

<link rel="stylesheet" href="${pageContext.request.contextPath}/res/bootstrap-4.3.1/css/bootstrap.min.css">

由于实际项目在开发过程中经常会发生重构,比如abc.jsp页面原来被放在引用的根路径下,那么它与被引用资源的相对路径是以根路径作为基路径的;一旦项目发生重构,如将abc.jsp页面移动到项目的/foo路径下,此时它与被引用资源的相对路径就以/foo路径为基路径——原来按相对路径引用的资源全部失效,这就意味着所有引用资源的代码都需要改写。因此,在实际项目中引入资源时都会避免使用相对路径,而是使用${pageContext.request.contextPath}来获取绝对路径。

url标签不仅代替了${pageContext.request.contextPath}的写法,而且还支持在URL中使用参数。url标签支持如下属性:

  • value:指定要构建的URL。在value属性指定的URL中可以使用{placeholders}形式占位符。
  • context:指定其他应用的context路径。如果不指定该属性,默认使用当前应用的context路径。
  • var:如果指定该属性,则表明该标签生成的URL不在页面上输出,而是以var指定的变量名保存起来。
  • scope:该属性需要与var属性结合使用,scope属性指定要将var指定的变量存入application、session、request或page范围内。
  • htmlEscape:指定是否对HTML代码执行转义。
  • javaScriptEscape:指定是否对JS代码执行转义。

如果url标签的value属性值中包含了占位符,则可使用param标签为这些占位符指定参数值。param标签可指定如下两个属性:

  • name:指定参数名。
  • value:指定参数值。
  1. <%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
  2. <!-- 导入Spring MVC的标签库 -->
  3. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <link rel="stylesheet" href="${pageContext.request.contextPath}/res/bootstrap-4.3.1/css/bootstrap.min.css">
  10. <script src="${pageContext.request.contextPath}/res/jquery-3.4.1.min.js">
  11. </script>
  12. <script src="${pageContext.request.contextPath}/res/bootstrap-4.3.1/js/bootstrap.min.js">
  13. </script>
  14. <title> url标签 </title>
  15. </head>
  16. <body>
  17. <div class="container">
  18. <div class="alert alert-primary">
  19. <spring:url value="/owners/{name}">
  20. <spring:param name="name" value="charbear"/>
  21. </spring:url>
  22. </div>
  23. <div class="alert alert-primary">
  24. <spring:url value="/authors/{authorId}/books/{bookId}">
  25. <spring:param name="authorId" value="crazyit.org"/>
  26. <spring:param name="bookId" value="2"/>
  27. </spring:url>
  28. </div>
  29. <div class="alert alert-primary">
  30. <spring:url value="/owners/{name}" context="test">
  31. <spring:param name="name" value="charbear"/>
  32. </spring:url>
  33. </div>
  34. <a href="<spring:url value='/authors/2'/>" class="btn btn-primary">查看作者</a>
  35. <a href="<spring:url value='/authors/2' context='other'/>"
  36. class="btn btn-primary">查看作者</a>
  37. </div>
  38. </body>
  39. </html>

2.3,其他标签

  • <spring:eval.../>标签:用于计算、输出表达式的值,如果不需要对表单时的值进行格式化,则世界使用JSP EL输出即可;但如果需要利用格式化器对表达式的值执行格式化,则应使用<spring:eval.../>标签。
  • <spring:message.../>标签:用于输出国际化消息,它的code属性用于指定国际化消息的key。
  • <spring:argument.../>标签:放在<spring:message.../>标签内部,用于为国际化消息中的占位符提供参考值。

还有一些如:bind、nestedPath、transform等标签,早期可能还偶尔遇到,现在基本很少使用了。



所属网站分类: 技术文章 > 博客

作者:skdk

链接:http://www.javaheidong.com/blog/article/222608/f99d7606ddc758c24d80/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)