簡體   English   中英

具有JSP的Spring-MVC。 如何從JSP頁面訪問范圍單一的對象?

[英]Spring-MVC with JSP. How to access a singleton-scoped object from a JSP page?

在單例作用域中獲得了一個自定義格式化程序bean。 並希望在JSP頁面中使用它。

第一種方式:

  • @Autowired(或@Inject)控制器中的bean
  • 將bean放在JSP上下文中

== ==代碼

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView get() {
        ModelAndView result = new ModelAndView( "view" );
        result.addObject( "format", format );
        return result;
    }

最簡單的方法,但是當幾乎每個頁面都需要此bean時,它很痛苦。

第二種方式:

  • 將bean移到session-scope
  • @Autowired(或@Inject)控制器中的bean
  • 現在,bean存儲在會話中,我們可以在sessionScope中找到它

== ==代碼

<div>
${sessionScope.format.doSmth()}
</div>

也很糟糕。 首先,需要注入bean-僅當Spring Context注入bean時才創建。 否則,將不會創建Bean並將其放入會話中。 其次,在這種情況下,我的IDE(IDEA)不提供語法突出顯示功能。

所以問題是:

有什么方法可以在JSP頁面中使用單例作用域的bean,而不必每次都將其置於上下文中並獲得IDE支持嗎?

我會考慮兩種在JSP視圖中使(單作用域)bean不負責任的方法。

  • 將其存儲為ServletContext屬性。 任何bean(包括formatter bean本身的@Configuration bean)都可以使用init-method中的bean。 然后可以通過EL立即將其訪問所有JSP
  • 使用攔截器將其置於所有或某些控制器之后的模型中。 它僅適用於那些視圖,但是如果您以后決定使用其他視圖(例如Velocity或Thymeleaf),它將仍然有效

但是我真的不知道如何獲得IDE支持:-((不要使用IDEA)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM