Thymeleaf : Concatenation-식으로 구문 분석 할 수 없습니다.
내 템플릿에서 여러 값을 연결하려고 할 때 문제가 있습니다. 여기의 Thymeleaf에 따르면 나는 단순히 + 그들을 함께 할 수 있어야합니다 ...
4.6 연결 텍스트
텍스트는 리터럴이든 변수 또는 메시지 식 평가 결과이든 상관없이 + 연산자를 사용하여 쉽게 연결할 수 있습니다.
th:text="'The name of the user is ' + ${user.name}"
내가 찾은 작품의 예는 다음과 같습니다.
<p th:text="${bean.field} + '!'">Static content</p>
그러나 이것은 그렇지 않습니다.
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
논리적으로 이것은 작동하지만 그렇지 않습니다. 내가 뭘 잘못하고 있습니까?
메이븐 :
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
<version>2.0.16</version>
<scope>compile</scope>
</dependency>
내 TemplateEngine 및 TemplateResolver를 설정하는 방법은 다음과 같습니다.
<!-- Spring config -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ClassLoaderTemplateResolver">
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="order" value="1"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="fileTemplateResolver"/>
<property name="templateResolvers">
<list>
<ref bean="templateResolver"/>
</list>
</property>
ThymeleafTemplatingService :
@Autowired private TemplateEngine templateEngine;
.....
String responseText = this.templateEngine.process(templateBean.getTemplateName(), templateBean.getContext());
AbstractTemplate.java :
public abstract class AbstractTemplate {
private final String templateName;
public AbstractTemplate(String templateName){
this.templateName=templateName;
}
public String getTemplateName() {
return templateName;
}
protected abstract HashMap<String, ?> getVariables();
public Context getContext(){
Context context = new Context();
for(Entry<String, ?> entry : getVariables().entrySet()){
context.setVariable(entry.getKey(), entry.getValue());
}
return context;
}
}
그러나 내가 본 것에서 당신은 구문에 아주 간단한 오류가 있습니다.
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
올바른 구문은 다음과 같습니다.
<p th:text="${bean.field + '!' + bean.field}">Static content</p>
사실 구문 th:text="'static part' + ${bean.field}"
은 th:text="${'static part' + bean.field}"
.
Try it out. Even though this is probably kind of useless now after 6 months.
You can concat many kind of expression by sorrounding your simple/complex expression between ||
characters:
<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>
Note that with | char, you can get a warning with your IDE, for exemple I get warning with the last version of IntelliJ, So the best solution it's to use this syntax:
th:text="${'static_content - ' + you_variable}"
We can concat Like this :
<h5 th:text ="${currentItem.first_name}+ ' ' + ${currentItem.last_name}"></h5>
참고URL : https://stackoverflow.com/questions/16119421/thymeleaf-concatenation-could-not-parse-as-expression
'developer tip' 카테고리의 다른 글
n 개의 마지막 행에서 mysql 선택 (0) | 2020.11.17 |
---|---|
Clojure XML 구문 분석 (0) | 2020.11.17 |
OPTIONS Http 메서드에 대한 Spring 보안 비활성화 (0) | 2020.11.16 |
Python을 사용하여 웹 페이지를 PDF로 변환하는 방법 (0) | 2020.11.16 |
matplotlib에서 축 값 숨기기 (0) | 2020.11.16 |