今天在代码中看到这样的写法:
<title th:inline="text">[[#{title.company.name}]]-登录</title>
不明白[[#{title.company.name}]] 表达式为什么这样写;下面来详细的介绍下。
原来这块是thmeleaf中表达式的知识
[[…]]之间的表达式在Thymeleaf被认为是内联表达式,在其中可以使用任何类型的表达式,为了让内联工作,我们必须激活它使用th:inline 属性,此属性有三种值(text , javascript and none)。
例:
正确的写法:
<p th:inline="text">Hello, [[${session.user.name}]]!</p>也可以写为:
<p th:text="${session.user.name}"></p>
错误的写法:
<p>Hello, [[${session.user.name}]]!</p> 这样[[${session.user.name}]]表达是就无法解析了;必须在<p>标签中增加th:inline属性,
th:inline="text"属性的用法(文本内联)
<p th:inline="text">Hello, [[${session.user.name}]]!</p> 也可以把th:inline 属性放到父标签上;
th:inline="javascript" 属性的用法(脚本内联)
<script th:inline="javascript">
if(top.document.domain == [[#{top.document.domain}]]) {
document.documentElement.style.display='block' ;
}else { top.location = [[#{top.location}]] ;
}
</script>
作用:在js中给变量赋值。th:inline="javascript"表示能在js中使用[ [] ]取值。只有加入th:inline="javascript"在js代码中才能使用[ [...] ]
thymeleaf #、* 和$的区别:
1.$符号取上下文中的变量:
<input type="text" name="userName" th:value="${user.name}">
2.#符号取thymeleaf工具中的方法、文字消息表达式:
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
3. *{...}选择表达式一般跟在th:object后,直接选择object中的属性
<div th:object="${session.user}">
<p th:text="*{name}"/><div>