当前位置: 首页 > 知识库问答 >
问题:

ThymileAF:连接-无法作为表达式进行分析

柳深
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>

从逻辑上讲,这应该是可行的,但事实并非如此,我做错了什么?

马文:

<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());

抽象模板。爪哇:

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

共有3个答案

公冶京
2023-03-14

请注意,使用| char,您可以在IDE中获得警告,例如,我在IntelliJ的最新版本中获得警告,因此最好的解决方案是使用以下语法:

th:text="${'static_content - ' + you_variable}"
栾景胜
2023-03-14

通过在| |字符之间对简单/复杂表达式进行排序,可以将多种类型的表达式组合在一起:

<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>
充修能
2023-03-14

但据我所见,你在语法上有一个相当简单的错误

<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是新手,不明白这个错误。

  • 问题内容: 尝试在模板中合并多个值时遇到问题。根据Thymeleaf的说法,我应该可以将它们+一起组合在一起… 4.6合并文本 文本,无论它们是文字还是评估变量或消息表达式的结果,都可以使用+运算符轻松连接: 这是我发现有效的示例: 但是,这不是: 从逻辑上讲,这应该可以,但是不能,我在做什么错? Maven: 这是我设置TemplateEngine和TemplateResolver的方法: Th

  • 问题内容: 我们有一个应用的公开测试版,偶尔会导致堆空间溢出。JVM通过休假来做出反应。 为了分析这一点,我想在内存出现故障的时候查看一下。Java不想让我这样做。该进程仍在内存中,但似乎未被视为Java进程。 有问题的服务器是Debian Lenny服务器Java 6u14 问题答案: 解决方案非常简单。我以root用户身份运行jmap,但必须以启动jvm的用户身份运行它。我现在要羞愧地隐藏我的

  • 问题内容: 我正在尝试实现一个简单的查询,如下所示: 很简单:我想得到合并结果,然后限制为12。 在Sequelize中,我使用以下功能: 但是此代码生成以下sql: 这与我尝试执行的逻辑完全不同,因为在生成的sql中,它首先获取任何12个结果,然后尝试与entity_area联接,当然,随机的12个结果不一定与entity_area匹配,所以我我没有得到任何结果。 请建议我这样做的正确方法。属性

  • 有人能帮我理解为什么我对elasticsearch分析器的理解是错误的吗? 我有一个包含各种字段的索引,特别是: 如下所示: 并且 的理解是,它将标记一个句子,以便在出现任意数量的或或时拆分它们。例如,给定模式,以下句子: 我希望看到: 我可以从https://regex101.com/ 然而,当我对上面的句子运行words\u only\u分析器时: 我得到, 这告诉我句子被标记为: 在我看来,