本文介紹了如何在純JSP中添加自定義VariableResolver的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我希望在不使用JSF或類似的東西時以編程方式添加一個自定義的VariableResolver,以便在1中提到的在作用域中查找Bean之前,EL將首先嘗試解析其中的變量。
目標是使數據庫中的對象按名稱在EL中可用,并且可能有很多對象需要放入某個作用域。
現在,我將一個特殊的Bean放到會話作用域中,名稱為‘z’,該Bean擴展了Map接口,因此允許使用${z.Address}、${z.fullName}這樣的表達式訪問對象。我正在嘗試消除那個”z”。
如果我設法在篩選器中插入解析器會更好(我肯定會檢查不會對每個Web請求多次執行此操作)
(編輯:可能我是在說ELContext,如何在那里放置我自己的VariableMapper或ELResolver或類似的東西)
推薦答案
您可以按如下方式注冊您的自定義ELResolver
。
@WebListener
public class Config implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
JspApplicationContext jspContext = JspFactory.getDefaultFactory().getJspApplicationContext(servletContext);
jspContext.addELResolver(new YourELResolver());
}
// ...
}
注意:此方法需要Servlet 2.5/JSP2.1或更高版本。
這篇關于如何在純JSP中添加自定義VariableResolver的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,