package com.sun.faces.facelets.tag.jsp; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import javax.el.ELContext; import javax.el.ExpressionFactory; import javax.el.ValueExpression; import javax.faces.context.FacesContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; public class WrapHttpServletRequestToAddParams extends HttpServletRequestWrapper { private Map<String, ValueExpression> params = Collections.emptyMap(); public WrapHttpServletRequestToAddParams(FacesContext facesContext, Map<String, ValueExpression> toCopy, HttpServletRequest request) { super(request); if (!toCopy.isEmpty()) { params = new HashMap<String, ValueExpression>(); ELContext elContext = facesContext.getELContext(); ExpressionFactory ef = facesContext.getApplication().getExpressionFactory(); for (String cur : toCopy.keySet()) { params.put(cur, ef.createValueExpression(elContext, toCopy.get(cur).getExpressionString(), Object.class)); } } } @Override public String getParameter(String name) { return (String) this.getAttribute(name); } @Override public Object getAttribute(String name) { Object result = null; if (params.containsKey(name)) { ValueExpression ve = params.get(name); result = ve.getValue(FacesContext.getCurrentInstance().getELContext()); } else { result = super.getAttribute(name); } return result; } @Override public Enumeration getAttributeNames() { return Collections.enumeration(params.keySet()); } }