テンプレートコンテキスト全体で使用されるユーザー名などの「グローバル」変数を追加するにはどうすればよいですか?
現在、これらをTemplateControllerの各ModelAndViewオブジェクトに明示的に設定しています。
これを行ういくつかの方法。
単一のコントローラーによって提供されるすべてのビューに変数を追加する場合は、@ModelAttribute
アノテーション付きメソッド- リファレンスドキュメントを参照 を追加できます。
同じ@ModelAttribute
メカニズムを使用して、一度に複数のコントローラーをアドレス指定することもできることに注意してください。そのために、その@ModelAttribute
メソッドを@ControllerAdvice
-- リファレンスドキュメントを参照 でアノテーションが付けられたクラスに実装できます。
@ControllerAdvice
私のために働く:
@ControllerAdvice(annotations = RestController.class)
public class AnnotationAdvice {
@Autowired
UserServiceImpl userService;
@ModelAttribute("currentUser")
public User getCurrentUser() {
UserDetails userDetails = (UserDetails)
SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
return userService.findUserByEmail(userDetails.getUsername());
}
}
application.properties
からthymeleaf
テンプレートに何かが必要な場合は、Springの SpELを利用できます。 -) 。
${@environment.getProperty('name.of.the.property')}
@ModelAttributeをご覧になることをお勧めします。 http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html
Blockquote Thymeleafでは、これらのモデル属性(またはThymeleaf用語のコンテキスト変数)には、次の構文でアクセスできます:$ {attributeName}、ここで、attributeNameはメッセージです。これはSpringEL式です。