如何从Thymeleaf调用对象的方法?
我的模板看不到从Spring传递的对象。
我的代码:
public class PublicModelAndView extends ModelAndView { @Autowired TemplateModulesHandler templateModulesHandler; public void init() { setViewName("index"); CSSProcessor cSSProcessor = new CSSProcessor(); cSSProcessor.setSiteRegion("public"); super.addObject("CSSProcessor", cSSProcessor); JSProcessor jSProcessor = new JSProcessor(); super.addObject("JSProcessor", jSProcessor); templateModulesHandler.setPublicModelAndView(this); } }
控制器的代码:
@SpringBootApplication @Controller public class IndexPage { @Autowired PublicModelAndView publicModelAndView; @Autowired OurServicesBean ourServicesBean; @Autowired PortfolioBean portfolioBean; @RequestMapping(value = "/", method = RequestMethod.GET) public ModelAndView indexPage() { publicModelAndView.setTemplate("publicSiteIndexPage"); publicModelAndView.addObject("ourServices", ourServicesBean.getMenu()); publicModelAndView.addObject("portfolioWorkTypes", portfolioBean.getWorkTypes()); publicModelAndView.addObject("portfolioWorks", portfolioBean.getWorks()); return publicModelAndView; } }
主模板的代码:
hello!
片段的代码:
SOME TITLE ${CSSProcessor.setDebugCaller("Public")} ${CSSProcessor.setSiteRegion("public")} ${CSSProcessor.addCSS("/css/main.css")}
结果我看到方法调用的代码,比如
SOME TITLE ${CSSProcessor.setDebugCaller("Public")} ${CSSProcessor.setSiteRegion("public")} ${CSSProcessor.addCSS("/css/main.css")}
为什么百里香叶没有调用方法,而是在输出页面打印这个文本? 在例子中来自http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html方法调用具有相同的语法,如
${person.createCompleteName()}
相同的代码适用于JSP,但不适用于百万美元。
这可以通过两种方式在Thymeleaf中完成:
首先是使用特殊的Thymeleaf:
SOME TITLE
第二种方式是:
SOME TITLE [["${CSSProcessor.setDebugCaller("Public")}"]] [["${CSSProcessor.setSiteRegion("public")}"]] [["${CSSProcessor.addCSS("/css/main.css")}"]]
对于自然模板处理,第二选项是更优选的。 有关内联的更多信息,请访问: http : //www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#inlining
你可以通过百里香调用方法,但这不是一个好习惯。 百万美元与JSP有着不同的理念 – 它尝试使用有效的HTML模板。 并且在JSP中调用方法是最好的也不是好的做法。 但我不是你的判断,所以要调用方法使用不可见的span或div,尝试类似:
Thymeleaf不像JSP那样工作。 它的工作原理是使用前缀为“th:”的新属性扩展现有的HTML元素。 并且您可以仅在这些额外属性中引用变量(因此对它们调用方法)。
例如,
将适用于百里香
但
${contentOfTheParagraph}"
不会。