org.jboss.seam.faces.Parameters Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jboss-seam Show documentation
Show all versions of jboss-seam Show documentation
Seam core module for Seam framework integrated with JSF2
package org.jboss.seam.faces;
import static org.jboss.seam.annotations.Install.FRAMEWORK;
import java.util.Map;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
/**
* Access to request parameters in the JSF environment.
*
* @author Gavin King
*
*/
@Name("org.jboss.seam.web.parameters")
@BypassInterceptors
@Scope(ScopeType.STATELESS)
@Install(precedence = FRAMEWORK, classDependencies = "javax.faces.context.FacesContext")
public class Parameters extends org.jboss.seam.web.Parameters {
@Override
protected Object convertRequestParameter(String requestParameter, Class> type) {
if (String.class.equals(type))
return requestParameter;
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext == null) {
throw new IllegalStateException("No FacesContext associated with current thread, cannot convert request parameter type");
} else {
Converter converter = facesContext.getApplication().createConverter(type);
if (converter == null) {
throw new IllegalArgumentException("no converter for type: " + type);
}
UIViewRoot viewRoot = facesContext.getViewRoot();
return converter.getAsObject(facesContext, viewRoot == null ? new UIViewRoot() : viewRoot, //have to pass something here, or get a totally useless NPE from JSF
requestParameter);
}
}
@Override
public Map getRequestParameters() {
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext != null) {
return facesContext.getExternalContext().getRequestParameterValuesMap();
}
return super.getRequestParameters();
}
}