使用Thymeleaf 3在自定义属性中转义与号吗?

时间:2019-04-29 06:55:17

标签: thymeleaf

在生成自定义属性时,是否可以进行基本的转义(对于我来说,是“&”号)?我尝试了很多方法(使用正常的转义,将所有动态属性的th:text,th:utext,th:attr替换为我的Spring代码中的自定义标记),不幸的是,发现了一些变通方法,如下所示。

基本上,这是一个带有Thymealeaf 3模板的AngularJS应用程序:

<script th:inline="javascript">     
    function customSubmit() {
        /*<![CDATA[*/   
        return /*[(${DIALOG_NAME} + '.$valid && submit()')]*/ null;
        /*]]>*/ 
    }       
</script>

<form th:name="${DIALOG_NAME}"
    th:action= "'/' + ${MODULE} + '.' + ${DIALOG_NAME}"
    th:ng-app="${DIALOG_NAME} + 'App'"
    th:ng-controller="${DIALOG_NAME} + 'Controller'"
    ng-submit="customSubmit()"
      ...
    >  
...
</form>

我想做的是一种类似的构造

th:ng-submit="some Thymeleaf expression"

生成带有&&的自定义属性值:

ng-submit="someDialog.$valid && submit()"

没有任何函数重定向,如上面的解决方法一样。

除了扩展Thymeleaf(我正在使用SpringStandard方言)之外,还有什么直接的方法可以生成这样的字符串?

谢谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

“&”号(&)应该在标记属性中转义为HTML,因此您可以这样操作:

th:attr="ng-submit='some thymeleaf with &amp;&amp; in it'"

编辑: 如果您还想在最终的表单属性值中引用某个模型属性的值,则必须使用表达式预处理,如下所示:

<form th:attr="ng-submit='__${DIALOG_NAME}__' + ' some ampersand &amp;&amp; in it'">
</form>