У меня есть следующий html-контент:
<span th:if = "${game.isWon()}" class = "label label-success">
YOU WIN! Game Score: ${game.getGameScore()}.</span>
Я не могу понять, как интерполировать game.getGameScore(), и необработанная строка продолжает отображаться. Я использую тимелеаф с Spring Boot. Любая помощь приветствуется.
Например: <span th:if = "${game.won}" th:text = "'YOU WIN! Game Score: ' + ${game.gameScore} + '.'"></span>
(не проверено).
выдает 500. Пожалуйста, воздержитесь от публикации непроверенного кода.
Понял - извините. Я опубликовал проверенный подход.
Если вы хотите использовать атрибуты непосредственно в тексте (а не в атрибутах HTML), вы должны использовать встраивание, которое имеет свой собственный синтаксис. (Обратите внимание, что встраивание включено по умолчанию в Thymeleaf 3, но вам, возможно, придется использовать атрибут th:inline = "text"
в более ранних версиях). Например:
<span th:if = "${game.won}" class = "label label-success">
YOU WIN! Game Score: [[${game.gameScore}]].
</span>
Традиционный способ сделать это — просто добавить несколько дополнительных тегов:
<span th:if = "${game.won}" class = "label label-success">
YOU WIN! Game Score: <span th:text = "${game.gameScore}" />.
</span>
Предполагая, что у вас есть игровой компонент, используя поля won
и gameScore
с соответствующими геттерами:
public class Game {
private boolean won;
private int gameScore;
public boolean isWon() {
return won;
}
public void setWon(boolean won) {
this.won = won;
}
public int isGameScore() {
return gameScore;
}
public void setGameScore(int gameScore) {
this.gameScore = gameScore;
}
}
Затем вы можете использовать это:
<span th:if = "${game.won}"
th:text = "'YOU WIN! Game Score: ' + ${game.gameScore} + '.'"
class = "label label-success">
</span>
Это генерирует следующий HTML:
<span class = "label label-success">YOU WIN! Game Score: 123.</span>
Используйте
th:text = "..."
внутри тега как атрибут, а не как содержимое между<span>
и</span>
. Кроме того, если ваши геттеры настроены правильно, вы можете просто использовать имена полей (например,won
вместоisWon()
).