Избавиться от амперсанда в пользовательском атрибуте с помощью Thymeleaf 3? - PullRequest
0 голосов
/ 29 апреля 2019

Возможно ли сделать базовое экранирование (в моем случае амперсанда) при создании пользовательского атрибута? Я пробовал много способов (с обычным экранированием, th: text, th: utext, th: attr для всех динамических атрибутов, заменяя пользовательский тег в моем коде Spring), к сожалению, нашел только какой-то обходной путь, который приведен ниже.

По сути, речь идет о приложении AngularJS с куском шаблона Thymealeaf 3:

<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 голосов
/ 29 апреля 2019

Амперсанды (&) должны быть экранированы 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...