Как написать собственный распознаватель для мультибрендового сайта? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть ситуация, когда th:replace необходимо условно разрешить в зависимости от того, существует ли файл для конкретной марки.

Текущий код прост:

<!--/* brand.menuLogo has been pre-resolved to point to some specific file */-->
<div th:replace="${brand.menuLogo}"></div>

Но этоменее чем удовлетворительно по ряду причин, и его трудно поддерживать.

Я бы хотел сделать это вместо этого:

<!--/* brand.id has some value like 'X' for Brand X */-->
<div th:replace="somefile_${brand.id}"></div>

С мыслью, что если somefile_X.html существует, он будет использоваться, в противном случае будет использоваться somefile.html.

Какой самый простой, понятный и понятный способ сделать это в Thymeleaf?Я открыт для любого решения, которое работает «путем Тимелифа», что бы это ни было.Я использовал термин «пользовательский распознаватель» в этом вопросе в качестве предвзятого представления о том, как он может работать, но я не обязан такой концепции.

РАЗЪЯСНЕНИЕ

На сайте есть сотни файлов, и не у каждого файла есть вариация для каждой марки.Я заинтересован в механизме, который может разрешить правильный файл на основе комбинации соглашения об именах и существования файла.Поэтому, если FILE_X существует, он выбирается, в противном случае выбирается FILE.

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете попробовать троичное выражение в значении th:replace, как показано ниже:

<div th:replace="${brand.id} ? 'somefile' + __${brand.id}__ + '.html' : 'somefile.html'">

Обратите внимание, что __${brand.id}__ предварительно обрабатывается механизмом тимилиста, как указано в этом документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...