Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package javax.faces.component;
 
 

UIOutput is a UIComponent that has a value, optionally retrieved from a model tier bean via a value expression, that is displayed to the user. The user cannot directly modify the rendered value; it is for display purposes only.

During the Render Response phase of the request processing lifecycle, the current value of this component must be converted to a String (if it is not already), according to the following rules:

By default, the rendererType property must be set to "javax.faces.Text". This value can be changed by calling the setRendererType() method.

 
 
 public class UIOutput extends UIComponentBase
     implements ValueHolder {
 
 
     // ------------------------------------------------------ Manifest Constants
 

    

The standard component type for this component.

 
     public static final String COMPONENT_TYPE = "javax.faces.Output";


    

The standard component family for this component.

 
    public static final String COMPONENT_FAMILY = "javax.faces.Output";
    enum PropertyKeys {
        value,
        converter
    }
    private Converter converter;
    // ------------------------------------------------------------ Constructors


    

Create a new UIOutput instance with default property values.

    public UIOutput() {
        super();
        setRendererType("javax.faces.Text");
    }
    // -------------------------------------------------------------- Properties
    public String getFamily() {
        return ();
    }
    // --------------------------------------- EditableValueHolder Properties
    public Converter getConverter() {
        if (this. != null) {
            return (this.);
        }
        return (ConvertergetStateHelper().eval(.);
    }
    public void setConverter(Converter converter) {
        clearInitialState();
        // we don't push the converter to the StateHelper
        // if it's been explicitly set (i.e. it's not a ValueExpression
        // reference
        this. = converter;
    }
    public Object getLocalValue() {
        return getStateHelper().get(.);
    }
    public Object getValue() {
        return getStateHelper().eval(.);
    }
    public void setValue(Object value) {
        getStateHelper().put(.value);
    }


    

In addition to the actions taken in UIComponentBase when PartialStateHolder.markInitialState() is called, check if the installed javax.faces.convert.Converter is a PartialStateHolder and if it is, call PartialStateHolder.markInitialState() on it.

    @Override
    public void markInitialState() {
        super.markInitialState();
        Converter c = getConverter();
        if (c != null && c instanceof PartialStateHolder) {
            ((PartialStateHolderc).markInitialState();
        }
    }
    @Override
    public void clearInitialState() {
        if (initialStateMarked()) {
            super.clearInitialState();
            Converter c = getConverter();
            if (c != null && c instanceof PartialStateHolder) {
                ((PartialStateHolderc).clearInitialState();
            }
        }
    }
    @Override
    public Object saveState(FacesContext context) {
        if (context == null) {
            throw new NullPointerException();
        }
        Object[] values = (Object[]) super.saveState(context);
        Object converterState = null;
        if ( != null) {
            if (!initialStateMarked()) {
                // we saving the full state
                converterState = saveAttachedState(context);
            } else {
                if ( instanceof StateHolder) {
                    StateHolder sh = (StateHolder;
                    if (!sh.isTransient()) {
                        converterState = ((StateHolder).saveState(context);
                    }
                }
            }
        }
        if (converterState != null || values != null) {
            return new Object[] { valuesconverterState };
        }
        return values;
    }
    
    @Override
    public void restoreState(FacesContext contextObject state) {
        if (context == null) {
            throw new NullPointerException();
        }
        if (state == null) {
            return;
        }
        Object[] values = (Object[]) state;
        super.restoreState(context, values[0]);
        Object converterState = values[1];
        if (converterState instanceof StateHolderSaver) {
            // this means full state was saved and as such
            // overwrite any existing converter with the saved
            // converter
             = (ConverterrestoreAttachedState(context,
                                                         converterState);
        } else {
            // apply any saved state to the existing converter
            if (converterState != null &&  instanceof StateHolder) {
                ((StateHolder)
                      .restoreState(contextconverterState);
            }
        }
    }
New to GrepCode? Check out our FAQ X