/** * Builds the view if not already available. This is mostly required for ViewExpiredException's. * * @param context The {@link FacesContext}. * @param throwable The occurred {@link Throwable}. * @param rootCause The root cause. * @return The unwrapped {@link Throwable}. * @throws java.io.IOException If building the view fails. */ protected Throwable buildView(FacesContext context, Throwable throwable, Throwable rootCause) throws IOException { if (context.getViewRoot() == null) { ViewHandler viewHandler = context.getApplication().getViewHandler(); String viewId = viewHandler.deriveViewId(context, ComponentUtils.calculateViewId(context)); ViewDeclarationLanguage vdl = viewHandler.getViewDeclarationLanguage(context, viewId); UIViewRoot viewRoot = vdl.createView(context, viewId); context.setViewRoot(viewRoot); vdl.buildView(context, viewRoot); // Workaround for Mojarra // if UIViewRoot == null -> 'IllegalArgumentException' is throwed instead of 'ViewExpiredException' if (rootCause == null && throwable instanceof IllegalArgumentException) { rootCause = new javax.faces.application.ViewExpiredException(viewId); } } return rootCause; }
@Override public void apply(FaceletContext faceletContext, UIComponent parent) throws IOException { if (!ComponentHandler.isNew(parent)) { return; throw new TagException(tag, "Composite component does not have BeanInfo attribute"); throw new TagException(tag, "Composite component BeanInfo does not have BeanDescriptor"); throw new TagException(tag, "Composite component does not support behavior events"); if (target instanceof BehaviorHolderAttachedObjectTarget) { BehaviorHolderAttachedObjectTarget behaviorTarget = (BehaviorHolderAttachedObjectTarget) target; if ((null != eventName && eventName.equals(behaviorTarget.getName())) || (null == eventName && behaviorTarget.isDefaultEvent())) { supportedEvent = true; break; throw new TagException(tag, "Composite component does not support event " + eventName); throw new TagException(this.tag, "Unable to attach behavior to non-ClientBehaviorHolder parent");
if (target instanceof EditableValueHolderAttachedObjectTarget) { List<UIComponent> childs = target.getTargets(composite); if (childs == null || childs.isEmpty()) { throw new FacesException(
@Override public UIViewRoot createView(FacesContext context, String viewId) { return getWrapped().createView(context, viewId); }
public void retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, List<AttachedObjectHandler> handlers) { getWrapped().retargetAttachedObjects(context, topLevelComponent, handlers); }
@Override public Stream<String> getViews(FacesContext facesContext, String path, ViewVisitOption... options) { return getWrapped().getViews(facesContext, path, options); }
@Override public void buildView(FacesContext context, UIViewRoot root) throws IOException { getWrapped().buildView(context, root); }
@Override public ViewMetadata getViewMetadata(FacesContext context, String viewId) { return getWrapped().getViewMetadata(context, viewId); }
@Override public void renderView(FacesContext context, UIViewRoot view) throws IOException { getWrapped().renderView(context, view); }
@Override public StateManagementStrategy getStateManagementStrategy(FacesContext context, String viewId) { return getWrapped().getStateManagementStrategy(context, viewId); }
@Override public BeanInfo getComponentMetadata(FacesContext context, Resource componentResource) { return getWrapped().getComponentMetadata(context, componentResource); }
@Override public Resource getScriptComponentResource(FacesContext context, Resource componentResource) { return getWrapped().getScriptComponentResource(context, componentResource); }
@Override public void retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent) { getWrapped().retargetMethodExpressions(context, topLevelComponent); }
@Override public boolean viewExists(FacesContext context, String viewId) { return getWrapped().viewExists(context, viewId); }
public UIComponent createComponent(FacesContext context, String taglibURI, String tagName, Map<String, Object> attributes) { return getWrapped().createComponent(context, taglibURI, tagName, attributes); }
@Override public List<String> calculateResourceLibraryContracts(FacesContext context, String viewId) { return getWrapped().calculateResourceLibraryContracts(context, viewId); }
@Override public UIViewRoot createView(FacesContext context, String viewId) { return getWrapped().createView(context, viewId); }
@Override public void retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, List<AttachedObjectHandler> handlers) { getWrapped().retargetAttachedObjects(context, topLevelComponent, handlers); }
@Override public Stream<String> getViews(FacesContext facesContext, String path, int maxDepth, ViewVisitOption... options) { return getWrapped().getViews(facesContext, path, maxDepth, options); }
@Override public Stream<String> getViews(FacesContext context, String path, ViewVisitOption... options) { return getWrapped().getViews(context, path, options); }