将setViewName设置为Spring中不同控制器中的相同JSP页面

时间:2018-05-01 02:51:54

标签: java spring-mvc

我有一个个人资料页面,我从不同的控制器获取值。

当我在任何控制器中使用mv.setViewName("User_Profile")时,我只从JSP页面上的那个控制器获取值。

从任何一个控制器访问页面时,不会显示所有其他控制器的值。

如何让所有控制器的所有值都显示在页面上?

1 个答案:

答案 0 :(得分:0)

您可以创建一个Spring MVC ControllerAdvice来设置公共属性:

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-controller-advice

  

通常是@ExceptionHandler,@ InitBinder和@ModelAttribute方法   在@Controller类(或类层次结构)中应用它们   声明在。如果您希望此类方法在全局范围内应用更多   控制器,您可以在标有的类中声明它们   @ControllerAdvice或@RestControllerAdvice。

因此,您创建了使用@ModelAttribute注释的方法,以在您的建议中设置公共属性。

您可以将ControllerAdvice与特定控制器关联:

    @ControllerAdvice(assignableTypes = {ProfileController1.class, ProfileController2.class})
    public class ProfileControllerAdvice{

    @ModelAttribute("someProperty")
    public String getSomeProperty(){
       return "I am can be accessed using ${someProperty} in the JSP.
    }
}