티멜리프:연결 - 식으로 구문 분석할 수 없습니다.
템플릿에서 여러 값을 조합하려고 할 때 문제가 발생합니다.여기 Thymelaf에 따르면, 나는 단순히 그것들을 함께 할 수 있을 것이다.
4.6 TEX 연결TS
텍스트는 리터럴이든 변수나 메시지 표현 평가 결과에 관계없이 + 연산자를 사용하여 쉽게 연결할 수 있습니다.
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>
Template Engine 및 Template Resolver를 설정하는 방법은 다음과 같습니다.
<!-- 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>
Tymeleaf Templating 서비스:
@Autowired private TemplateEngine templateEngine;
.....
String responseText = this.templateEngine.process(templateBean.getTemplateName(), templateBean.getContext());
Abstract Template.자바:
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}"
.
한번 써보세요.비록 6개월이 지난 지금은 이것이 다소 쓸모없을지라도.
당신은 당신의 단순/복잡한 표현을 둘러싸는 것으로 많은 종류의 표현을 구성할 수 있다.||
문자:
<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>
| char를 사용하면 IDE로 경고를 받을 수 있습니다.예를 들어 인텔리J의 마지막 버전에서 경고를 받을 수 있습니다.따라서 가장 좋은 해결책은 다음 구문을 사용하는 것입니다.
th:text="${'static_content - ' + you_variable}"
다음과 같이 나타낼 수 있습니다.
<h5 th:text ="${currentItem.first_name}+ ' ' + ${currentItem.last_name}"></h5>
언급URL : https://stackoverflow.com/questions/16119421/thymeleaf-concatenation-could-not-parse-as-expression
'programing' 카테고리의 다른 글
jQuery Data vs Attr? (0) | 2023.01.03 |
---|---|
sqlite3.프로그래밍 오류:제공된 바인딩 수가 잘못되었습니다.현재 스테이트먼트에서는 1을 사용하고 있으며 74가 제공되고 있습니다. (0) | 2022.12.29 |
IntelliJ 정적 Import 완료 (0) | 2022.12.29 |
트위터 부트스트랩 vs jQuery UI? (0) | 2022.12.29 |
PHP 어레이에서 중복된 값을 검출하는 방법 (0) | 2022.12.29 |