在 Thymeleaf 中使用复杂的 th:attr 字段
Using complex th:attr fields with Thymeleaf
我有一个带有相当复杂 data-
属性的 Thymeleaf 模板,如下所示:
<div data-dojo-props="required: true, placeholder:'Foo bar baz', more: stuff" ...>
我想让 Thymeleaf 提供占位符,如下所示:
<div th:data-dojo-props="placeholder:'#{foo.bar.baz}'" ...>
当然不行。我应该像这样使用 th:attr
:
<div th:attr="data-dojo-props=placeholder:'#{foo.bar.baz}'" ...>
这也行不通。只要在 th:attr
中添加 :
或 '
,模板就会中断。我也试过逃避他们,例如\:
和 \'
,还尝试使用 HTML 实体,例如&38;
,但也没有用。
所以我尝试了 th:prependattr
和 th:appendattr
:
<div th:prependattr="data-dojo-props=placeholder:'"
th:attr="data-dojo-props=#{foo.bar.baz}"
th:appendattr="data-dojo-props='"
...>
但它们也无法处理 :
和 '
,也无法转义它们:
<div th:prependattr="data-dojo-props=placeholder&58;&39;"
th:attr="data-dojo-props=#{foo.bar.baz}"
th:appendattr="data-dojo-props=&39;"
...>
有什么方法可以使我缺少的这项工作有效?
您可以在 Thymeleaf 消息中使用参数 属性 例如:
Messages.properties:
dojo.props=required: {0}, placeholder: {1}, more: {...}
dojo.props.required=true
dojo.props.placeholder=Foo bar baz
HTML 消息属性:
<div th:attr="data-dojo-props=#{dojo.props(#{dojo.props.required}, #{dojo.props.placeholder})}"></div>
或者,如果您想从对象中获取值:
<div th:attr="data-dojo-props=#{dojo.props(${dojo.props.required}, ${dojo.props.placeholder})}"></div>
甚至选择器也能工作:
<div th:attr="data-dojo-props=#{dojo.props(*{dojo.props.required}, *{dojo.props.placeholder})}"></div>
我有一个带有相当复杂 data-
属性的 Thymeleaf 模板,如下所示:
<div data-dojo-props="required: true, placeholder:'Foo bar baz', more: stuff" ...>
我想让 Thymeleaf 提供占位符,如下所示:
<div th:data-dojo-props="placeholder:'#{foo.bar.baz}'" ...>
当然不行。我应该像这样使用 th:attr
:
<div th:attr="data-dojo-props=placeholder:'#{foo.bar.baz}'" ...>
这也行不通。只要在 th:attr
中添加 :
或 '
,模板就会中断。我也试过逃避他们,例如\:
和 \'
,还尝试使用 HTML 实体,例如&38;
,但也没有用。
所以我尝试了 th:prependattr
和 th:appendattr
:
<div th:prependattr="data-dojo-props=placeholder:'"
th:attr="data-dojo-props=#{foo.bar.baz}"
th:appendattr="data-dojo-props='"
...>
但它们也无法处理 :
和 '
,也无法转义它们:
<div th:prependattr="data-dojo-props=placeholder&58;&39;"
th:attr="data-dojo-props=#{foo.bar.baz}"
th:appendattr="data-dojo-props=&39;"
...>
有什么方法可以使我缺少的这项工作有效?
您可以在 Thymeleaf 消息中使用参数 属性 例如:
Messages.properties:
dojo.props=required: {0}, placeholder: {1}, more: {...}
dojo.props.required=true
dojo.props.placeholder=Foo bar baz
HTML 消息属性:
<div th:attr="data-dojo-props=#{dojo.props(#{dojo.props.required}, #{dojo.props.placeholder})}"></div>
或者,如果您想从对象中获取值:
<div th:attr="data-dojo-props=#{dojo.props(${dojo.props.required}, ${dojo.props.placeholder})}"></div>
甚至选择器也能工作:
<div th:attr="data-dojo-props=#{dojo.props(*{dojo.props.required}, *{dojo.props.placeholder})}"></div>