本文介紹了如何在純JSP中添加自定義VariableResolver的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我希望在不使用JSF或類似的東西時(shí)以編程方式添加一個(gè)自定義的VariableResolver,以便在1中提到的在作用域中查找Bean之前,EL將首先嘗試解析其中的變量。
目標(biāo)是使數(shù)據(jù)庫中的對(duì)象按名稱在EL中可用,并且可能有很多對(duì)象需要放入某個(gè)作用域。
現(xiàn)在,我將一個(gè)特殊的Bean放到會(huì)話作用域中,名稱為‘z’,該Bean擴(kuò)展了Map接口,因此允許使用${z.Address}、${z.fullName}這樣的表達(dá)式訪問對(duì)象。我正在嘗試消除那個(gè)”z”。
如果我設(shè)法在篩選器中插入解析器會(huì)更好(我肯定會(huì)檢查不會(huì)對(duì)每個(gè)Web請(qǐng)求多次執(zhí)行此操作)
(編輯:可能我是在說ELContext,如何在那里放置我自己的VariableMapper或ELResolver或類似的東西)
推薦答案
您可以按如下方式注冊(cè)您的自定義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或更高版本。
這篇關(guān)于如何在純JSP中添加自定義VariableResolver的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,