2015-05-08 11 views

Odpowiedz

8

Kilka sposobów na zrobienie tego.

Jeśli chcesz dodać zmienną do wszystkich widoków obsługiwanych przez pojedynczy kontroler, możesz dodać metodę z adnotacjami @ModelAttribute - see reference doc.

Należy pamiętać, że można również, korzystając z tego samego mechanizmu @ModelAttribute , zaadresować wiele kontrolerów jednocześnie. W tym celu można zaimplementować tę metodę @ModelAttribute w klasie opisanej przez @ControllerAdvice - .

+0

'@ ControllerAdvice' pracował jak urok dla mnie. – demaniak

1

Być może spodoba Ci się opcja @ModelAttribute. http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

Blockquote W Thymeleaf, atrybuty te modelu (lub zmiennych kontekstu Thymeleaf żargonie) można uzyskać z następującej składni: $ {attributeName}, gdzie attributeName w naszym przypadku jest komunikaty. To jest wyrażenie Spring EL.

1

Jeśli po prostu chcesz coś ze swojego application.properties w swoim szablonie , możesz skorzystać z wersji Spring SpEL.

${@environment.getProperty('name.of.the.property')} 
0

@ControllerAdvice praca dla mnie:

@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()); 
    } 
    }