【问题标题】:What do the Spring Framework JSP Tags do?Spring Framework JSP 标签有什么作用?
【发布时间】:2016-06-15 00:03:26
【问题描述】:

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

我了解表单标签库中定义的标签的描述,所以我知道哪些 HTML 标签映射到 Spring Form 标签。但是,我根本不知道如何使用 Spring Tag Library。定义的标签和给出的描述如下:

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

我一点也不明白这些描述。转义、主题、JSTL、绑定、嵌套路径、Spring 表达式等——他们在说什么?

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

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

【问题讨论】:

    标签: html spring jsp spring-mvc tags


    【解决方案1】:

    然后表单标签库用于轻松地将您的后端对象与表单字段绑定。用

    声明这些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 编码有关。如果您不在应用程序中相应地使用它,可能会引发一些安全问题。

    Message 与 i18n 相关:您可以轻松地在某些国家/地区之间构建语言环境切换器。检索所有翻译的方法是使用该标记库。

    主题与您的 Web 应用程序的外观和感觉有关。您可以使用这些 taglib 为最终用户轻松构建主题切换器。

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

    JSTL 是一种处理 JSP 中许多事情的方法,它比 spring-taglibs 早很多年开发。 JSTL 仍然是一个有效的选择,但在您的视图层开发的较低级别。做同样的工作会更长,甚至更难。

    为您的 JSP 标头声明您的 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"%>
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-19
      • 2016-11-13
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2014-10-11
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多