如何在纯JSP中添加自定义VariableResolver

fed*_*edd 4 java jsp el

我希望以编程方式添加一个自定义的VariableResolver,当JSF或类似的东西没有使用时,所以在寻找1中提到的范围内的bean之前,EL会首先尝试解析其中的变量.

目标是使数据库中的对象可以通过其名称在EL中使用,并且可以将很多对象放入某个范围.

现在我将一个特殊的bean放在名为"z"的会话范围内,并且该bean扩展了Map接口,因此可以使用$ {z.address},$ {z.fullName}等表达式访问对象.我试图消除'z'.

如果我设法将我的解析器插入过滤器中更好(确保我会检查不要为每个Web请求多次执行此操作)

(编辑:也许我在谈论ELContext,如何放置我自己的VariableMapper或ELResolver或类似的东西)

Bal*_*usC 7

您可以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()); 
    } 

    // ... 
}
Run Code Online (Sandbox Code Playgroud)

注意:此方法需要Servlet 2.5/JSP 2.1或更高版本.