【问题标题】:How to call a service method with Thymeleaf如何使用 Thymeleaf 调用服务方法
【发布时间】:2017-05-08 06:52:05
【问题描述】:

我们可以在jsp中调用服务方法如下(比如检查授权):

<sec:authorize var="hasLicense" access="@licenseService.hasCapability('Event')"/>

在使用 Thymeleaf 时如何调用这个方法?

我知道,我们可以检查角色如下但无法获得上述情况的示例:

<li class="link" sec:authorize="hasRole('event')">

【问题讨论】:

    标签: spring thymeleaf


    【解决方案1】:

    Thymeleaf 允许访问在 Spring 应用程序中注册的 bean 使用@beanName 语法的上下文,例如:

    <div th:text="${@urlService.getApplicationUrl()}">...</div>
    

    http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

    所以这应该有效:

    <li class="link" sec:authorize="${@licenseService.hasCapability('Event')}">
    

    【讨论】:

      【解决方案2】:

      为了让您从 Thymeleaf 模板调用服务方法,您需要像这样将该服务添加到您的模型中

      @Controller
      public class PageController {
      
          @Autowired
          LicenseService licenseService;
      
          @RequestMapping("/yourPage")
          public String getYourPage(Model model) {
              model.addAttribute("licenseService", licenseService);
              return "yourPage.html";
          }
      
      }
      

      之后你就可以在yourPage.html中使用licenseService了。

      <div th:if="${licenseService.verifyLicense() == true}">
          <p> License verified </p>
      </div>
      

      【讨论】:

      • 感谢阿卜杜拉!!它就是这样工作的。但是,将服务添加到模型中是否可以?我们不能用 sec:authorize 做点什么来实现这个吗?
      猜你喜欢
      • 2018-06-01
      • 2023-02-21
      • 2020-04-27
      • 2019-09-11
      • 1970-01-01
      • 2010-11-16
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多