* Add PrettyFaces UIViewParameters to the component tree. This is how we do value injection, conversion, and
* validation.
*/
private void addPrettyViewParameters(final FacesContext context, final UIViewRoot view)
{
PrettyContext prettyContext = PrettyContext.getCurrentInstance(context);
if (prettyContext.isPrettyRequest())
{
UIComponent metadata = view.getFacet(UIViewRoot.METADATA_FACET_NAME);
if (metadata == null)
{
metadata = context.getApplication().createComponent(UIPanel.COMPONENT_TYPE);
view.getFacets().put(UIViewRoot.METADATA_FACET_NAME, metadata);
}
List<UIComponent> children = metadata.getChildren();
List<PathParameter> pathParameters = prettyContext.getCurrentMapping().getPatternParser().getPathParameters();
for (PathParameter p : pathParameters)
{
UIViewParameter param = (UIViewParameter) context.getApplication().createComponent(
UIViewParameter.COMPONENT_TYPE);
Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
requestMap.put(p.getName(), p.getValue());
param.setName(p.getName());
ValueExpression ve = elUtils.createValueExpression(context, p.getExpression().getELExpression());
param.setValueExpression("value", ve);
param.setImmediate(true);
children.add(param);
}
List<QueryParameter> queryParams = prettyContext.getCurrentMapping().getQueryParams();
for (QueryParameter q : queryParams)
{
UIViewParameter param = new UIViewParameter();
param.setName(q.getName());