Spring Framework JSP标签做了什么?

时间:2016-03-02 08:36:41

标签: html spring jsp spring-mvc tags

我目前正在将一些HTML标签映射到我的JSP文件中的Spring标签。 Spring MVC有两个标记库:spring.tld和spring-form.tld

我理解表单标记库中定义的标记的描述,因此我知道要映射到Spring Form标记的HTML标记。但是,我根本不知道如何使用Spring Tag Library。定义的标签和给定的描述如下:

  • htmlEscape :设置当前页面的默认HTML转义值。覆盖" defaultHtmlEscape" web.xml中的context-param,如果有的话。
  • escapeBody :使用HTML转义和/或JavaScript转义来逃避它的封闭正文内容。 HTML转义标志参与页面范围或应用程序范围的设置(即通过HtmlEscapeTag或" defaultHtmlEscape" web.xml中的context-param)。
  • 消息:使用给定代码检索消息,如果代码不可解析,则检索文本。 HTML转义标志参与页面范围或应用程序范围的设置(即通过HtmlEscapeTag或" defaultHtmlEscape" web.xml中的context-param)。
  • 主题:使用给定代码检索主题消息,如果代码不可解析则检索文本。 HTML转义标志参与页面范围或应用程序范围的设置(即通过HtmlEscapeTag或" defaultHtmlEscape" web.xml中的context-param)。
  • 参数:基于JSTL fmt:param标记的参数标记。目的是支持spring中的参数:message和spring:theme tags。
  • hasBindErrors :在绑定错误的情况下提供错误实例。 HTML转义标志参与页面范围或应用程序范围的设置(即通过HtmlEscapeTag或" defaultHtmlEscape" web.xml中的context-param)。
  • nestedPath :设置绑定标记路径使用的嵌套路径。
  • bind :为给定的绑定路径提供BindStatus对象。 HTML转义标志参与页面范围或应用程序范围的设置(即通过HtmlEscapeTag或" defaultHtmlEscape" web.xml中的context-param)。
  • 转换:使用BindTag中适当的自定义PropertyEditor(只能在BindTag中使用),将变量转换为字符串。 HTML转义标志参与页面范围或应用程序范围的设置(即通过HtmlEscapeTag或" defaultHtmlEscape" web.xml中的context-param)。
  • url :基于JSTL c:url标记的网址标记。此变体完全向后兼容标准标签。增强功能包括对URL模板参数的支持。
  • param :基于JSTL c:param标记的参数标记。唯一的目的是支持spring内的params:url标签。
  • eval :评估Spring表达式(SpEL)并打印结果或将其分配给变量。

我一点也不理解这些描述。转义,主题,JSTL,绑定,嵌套路径,Spring表达式等 - 他们在谈论什么?

这些标签有什么作用?他们在我的JSP文件中替换了哪些标签?我尝试在线搜索,但所有搜索结果都是关于表格标签库(spring-form.tld)而不是标签库(spring.tld),这是我遇到问题的那个。

编辑:我将从Struts 1.1迁移到Spring 4.1.6。部分步骤涉及在JSP文件中转换为Spring兼容标记。原始JSP文件不包含任何taglib指令,因此我猜测原始代码中只使用HTML标记。

1 个答案:

答案 0 :(得分:0)

然后使用表单taglib轻松地将您的后端(s)对象与表单的字段绑定。用

声明这些spring taglib
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

并在表单中使用标记为:

 <form:form>
    <table>
       <tr>
          <td>First Name:</td>
          <td><form:input path="user.firstName"/></td>
       </tr>
       <tr>
          <td>Last Name:</td>
          <td><form:input path="user.lastName"/></td>
       </tr>
       <tr>
          <td colspan="2">
             <input type="submit" value="Save!"/>
          </td>
       </tr>
    </table>
</form:form>

转义与特殊字符的HTML编码有关。如果您不在应用程序中使用它,可能会引发一些安全问题。

消息与i18n相关:您可以在一些国家/地区之间轻松构建区域设置切换器。检索所有翻译的方法是使用该taglib。

主题与您的网络应用程序的外观相关。您可以使用这些taglib为最终用户构建一个轻松的主题切换器。

绑定与您在视图中处理DTO中的许多字段有关,尤其是在您提交表单时。

JSTL是一种处理JSP中很多东西的方法,它是在spring-taglib之前很多年开发的。 JSTL仍然是一个有效的选择,但在视图层开发的较低级别。做同样的工作会更长,也许更难。

对于JSPs标头,以声明taglib的导入:

<%@ page language="java" contentType="text/html; charset=UTF-8" isELIgnored="false" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@page session="true"%>

当然这只是一个例子,有一个额外的好处:在管理员区域JSP中处理身份验证内容的spring-security taglib导入:)

使用current official documentation发现这些世界。 查看“22.5 JSP&amp; JSTL”部分第555页,并期待文档spring:bindspring:message等。 你会发现你需要了解一切:)