当前位置: 首页 > 面试题库 >

Thymeleaf:串联-无法解析为表达式

诸龙野
2023-03-14
问题内容

尝试在模板中合并多个值时遇到问题。根据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>

从逻辑上讲,这应该可以,但是不能,我在做什么错?

Maven:

<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}"

试试看。即使这在6个月后现在可能毫无用处。



 类似资料:
  • 我对thymeleaf是新手,不明白这个错误。

  • 我使用的是spring boot thymeleaf neo4j。除了thymeleaf无法解析模板product_网格中th:each块中使用的'product'变量的一些属性外,其他一切都正常工作。html,其中包括表单标记中的th:src=“${product.URL}”、th:text=“${product.title}”和th:action=“@{/product/(${product.

  • 我想知道如何在spring表单mvc平台中传输参数。首先,下面的代码是spring格式的java文件。 下一个文件是有界编辑。html文件 表单的输入链接url如下所示, 但是spring mvc控制器代码中抛出了异常。 例外的是 我不知道如何在Spring-Thymeleaf表单模板中传递参数。

  • 我的问题是我未能显示胸腺叶模板。我怀疑配置错误,但我似乎找不到它。提前感谢:) 波姆。xml: 模板在: Spring配置: 控制器: 我正在尝试访问:并获得404。 另一件事,有人能解释(或给文档一个链接)哪个servlet被用来“返回”模板html吗?是Spring调度员servlet吗? 好的,所以我忘记了,谢谢@Benjamin c.然而,添加它会产生:

  • 我不熟悉Spring5和SpringBoot。我试图用thymeleaf创建一个Spring5/spring启动应用程序。我想创建一个war,而不是使用带有spring boot的嵌入式Web服务器。 当我部署war时,我的应用程序启动,我可以访问src/main/resources/static/中的测试html页面,其中包含调用我的控制器的javascript。我可以在这些页面上执行到控制器和