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} ...