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

在thymeleaf模板中调用Web上下文对象方法的问题

施茂
2023-03-14

我正在尝试调用web上下文对象上的方法,例如在我的模板中的thymeleaf 3.0.3和Spring Boot 1.5.1中的#request和#response。

我不断收到这样的错误:

spel.spel.spelEvaluation异常: EL1011E: 方法调用: 尝试在空上下文对象上调用方法(java.lang.String)

这是一个控制器:

@Controller
public class Controller {

@RequestMapping(method = RequestMethod.GET, value = "/endpoint", produces = "text/html")
public String customerServiceSignin(Model uiModel, HttpServletRequest request) {
    uiModel.addAttribute("attr1", true); // show proper header
    uiModel.addAttribute("attr2", false);
    return "template";
}

和一个模板:

<html xmlns:th="http://www.thymeleaf.org">
<div>
<div style="...">

    <div class="errorblock" th:unless="${#strings.isEmpty(#request.getAttribute('some_attr'))}" th:utext="${#request.getAttribute('some_other_attr')}"></div>

    <form name='f' action="action" method='POST'>
        <table>
            <tr>
                <td>User:</td>
                <td><input type='text' name='username' value="" />
                </td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='password' name='password' />
                </td>
            </tr>
            <tr>
                <td><input name="submit" type="submit" value="submit" />
                </td>
                <td><input name="reset" type="reset" />
                </td>
            </tr>
        </table>
    </form>
</div>
</div>
</html>

这是一个例子,但无论我在哪里尝试,我都会遇到这些错误。我缺了一块吗?

共有2个答案

翟沈义
2023-03-14

我认为这里的问题是,您应该使用#string而不是#string>/code>。#request部分看起来不错。

此外,只是对您的编码风格的一些评论,您可以格式化:

<th:block th:if="${not #string.isEmpty(#request.getAttribute('some_attr'))}">
    <div class="errorblock" th:utext="${#request.getAttribute('some_other_attr')}"></div>
</th:block>

仅仅是

<div th:unless="${#strings.isEmpty(#request.getAttribute('some_attr'))}" class="errorblock" th:utext="${#request.getAttribute('some_other_attr')}" />

傅志文
2023-03-14

原来#请求需要是#httpServletRequest

 类似资料:
  • 问题内容: 是否可以调用从Freemarker模板获取参数的方法? 我有一个对象模型,试图用Freemarker渲染到网页中。其中一个对象具有一种获取其内容的子列表的方法-采取用于过滤列表的参数: 我知道在JSP中您不能直接执行此操作,但是您可以编写自定义函数来实现所需的结果。您如何在Freemarker中解决此问题?编写自定义函数是否一样?还是有某种实际调用这种功能的方法? 问题答案: Free

  • 问题内容: 我的模板看不到从Spring传递过来的对象。 我的代码: Contoller的代码: 主模板的代码: 片段的代码: 结果,我看到了方法调用的代码,例如 为什么thymeleaf不调用方法,而是在输出页上打印此文本?在http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html的示例中,方法调用具有相同的语法,例如 相同的代

  • 我试图将返回的javascript函数的文本值附加到thymeleaf th:text模板。 可以用绑定javascript函数。 可以将javascript函数与绑定吗? span标记在循环中。 我想使用回调函数与th:text。

  • 下面是我要为其创建测试的类和方法: 具体地说,我希望模拟getAnalytics.getAll(),这样它就会返回一个我已经定义的字符串。而不是方法执行它的任务。这是我的代码:

  • 我正试图了解ES6中类的语法。同时通过Bonnie Eisenman的学习反应母语学习织物母语。 我遇到了一个问题,在回调中访问,当回调是一个Class方法时。我知道回调中的词汇问题已经在StackOverflow上多次提出。例如,如何访问回调中正确的this上下文?。 根据我在网上的研究,我找到了一个解决方案。但我不确定在ES6中这样做是否正确。 当我尝试以下操作时,出现了我的问题: (我只是从

  • 我遵循了这篇Thymeleaf教程“使用Thymeleaf在Spring生成丰富的HTML电子邮件”,使用Thymeleaf模板生成了一封电子邮件。一切正常,但我无法访问应用程序中其他地方使用的ApplicationContext bean。 更具体地说,在我的电子邮件模板中,我希望有如下内容: 其中“myBean”是一个@组件。这可能吗?我不是在寻找像这样的解决方法 其中bean作为变量添加到模