我有一个Thymeleaf模板,其中包含相当复杂的data-
属性,如下所示:
<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;"
...>
任何使我失踪的工作的方法?
答案 0 :(得分:2)
您可以在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>