All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.seam.faces.Parameters Maven / Gradle / Ivy

There is a newer version: 3.2.26.ayg
Show newest version
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();
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy