Comment appeler la méthode de l'objet de Thymeleaf?
Mon template ne pas voir les objets, est passé de Printemps.
Mon code:
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);
}
}
Contolleur code:
@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;
}
}
Principal du modèle de code:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
>
<head th:include="headerAndFooter/fragments/header :: publicSiteHeader">
<title></title>
</head>
<body>
hello!
</body>
</html>
Fragment de code:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head th:fragment="publicSiteHeader">
<title>SOME TITLE</title>
${CSSProcessor.setDebugCaller("Public")}
${CSSProcessor.setSiteRegion("public")}
${CSSProcessor.addCSS("/css/main.css")}
</head>
<body>
</body>
</html>
Comme résultat je voir le code de la méthode d'appel, comme
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SOME TITLE</title>
${CSSProcessor.setDebugCaller("Public")}
${CSSProcessor.setSiteRegion("public")}
${CSSProcessor.addCSS("/css/main.css")}
Pourquoi thymeleaf n'ai pas l'appel de méthodes, mais de l'impression de ce texte à la page de sortie? Dans l'exemple de http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html l'appel de méthode a la même syntaxe, comme
${person.createCompleteName()}
Le même code fonctionne bien avec JSP, mais ne fonctionnent pas avec thymeleaf.
Vous devez vous connecter pour publier un commentaire.
Qui peut être fait dans Thymeleaf de deux façons:
Première consiste à utiliser de spécial pour Thymeleaf:
Et la deuxième manière est:
Naturel modèle de traitement de deuxième option est plus préférable. Plus d'infos sur inline peuvent être trouvés ici: http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#inlining
Vous pouvez appeler les méthodes via thymeleaf mais il n'est pas une bonne pratique. Le thymeleaf a une philosophie différente de JSP - il essayer d'utiliser un code HTML valide tamplates. Et pour être honnête d'appeler des méthodes dans JSP n'est pas une bonne pratique ainsi. Mais je ne suis pas votre juge, afin d'appeler l'utilisation d'une méthode non visible span ou div, essayez quelque chose comme:
Thymeleaf ne fonctionne pas comme JSP. Il fonctionne par extension existante des éléments HTML avec de nouveaux attributs préfixé par "e:". Et vous pouvez faire référence à des variables (et donc l'appel de méthode sur eux) que dans les thèses extra-attributs.
E. g.
<p th:text="${contentOfTheParagraph}" />
travaillera avec thymeleafMais
<p>${contentOfTheParagraph}"</p>
ne sera pas.