开发学院

您的位置:首页>教程>正文

教程正文

Thymeleaf 3.0教程:18 附录一:表达式基本对象

  有些对象和变量映射总是可以调用的。让我们看看他们:

基本对象

  #ctx :org.thymeleaf.context.IContext或org.thymeleaf.context.IWebContext的实现取决于我们的环境(独立或网络)。

  注意 #vars和#root 是同一对象的同义词,但建议使用#ctx。

/*
 * ======================================================================
 * See javadoc API for class org.thymeleaf.context.IContext
 * ======================================================================
 */

${#ctx.locale}
${#ctx.variableNames}

/*
 * ======================================================================
 * See javadoc API for class org.thymeleaf.context.IWebContext
 * ======================================================================
 */

${#ctx.request}
${#ctx.response}
${#ctx.session}
${#ctx.servletContext}

#locale : 直接访问与当前请求相关联的java.util.Locale。

${#locale}

request/session属性等的Web上下文命名空间。

  在网络环境中使用Thymeleaf时,我们可以使用一系列快捷方式来访问request参数、session属性和application属性:

  请注意,这些不是上下文对象,而是作为变量添加到上下文中的映射,因此我们不用#。在某种程度上,它们充当名称空间。

  param : 用于检索请求参数. ${param.foo} 是一个具有foo请求参数的String[],所以${param.foo[0]} 通常用于获取第一个值。

/*
 * ============================================================================
 * See javadoc API for class org.thymeleaf.context.WebRequestParamsVariablesMap
 * ============================================================================
 */

${param.foo}              // Retrieves a String[] with the values of request parameter 'foo'
${param.size()}
${param.isEmpty()}
${param.containsKey('foo')}
...

  session : 用于检索会话属性。

/*
 * ======================================================================
 * See javadoc API for class org.thymeleaf.context.WebSessionVariablesMap
 * ======================================================================
 */

${session.foo}                 // Retrieves the session atttribute 'foo'
${session.size()}
${session.isEmpty()}
${session.containsKey('foo')}
...

  application : 于检索application/servlet上下文属性。

/*
 * =============================================================================
 * See javadoc API for class org.thymeleaf.context.WebServletContextVariablesMap
 * =============================================================================
 */

${application.foo}              // Retrieves the ServletContext atttribute 'foo'
${application.size()}
${application.isEmpty()}
${application.containsKey('foo')}
...

  请注意,没有必要为访问请求属性(与请求参数相反)指定命名空间,因为所有请求属性都会作为上下文根中的变量自动添加到上下文中:

${myRequestAttribute}

Web上下文对象

  在网络环境中,还可以直接访问以下对象(请注意,这些是对象,而不是映射/名称空间):

  #request : 直接访问与当前请求相关联的javax.servlet.http.HttpServletRequest对象。

${#request.getAttribute('foo')}
${#request.getParameter('foo')}
${#request.getContextPath()}
${#request.getRequestName()}
...

  #session : 直接访问与当前请求关联的javax.servlet.http.HttpSession对象。

${#session.getAttribute('foo')}
${#session.id}
${#session.lastAccessedTime}
...

  #servletContext :直接访问与当前请求关联的javax.servlet.ServletContext对象。

${#servletContext.getAttribute('foo')}
${#servletContext.contextPath}
...