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

javax.faces.component.FacesComponent Maven / Gradle / Ivy

Go to download

Jakarta Faces defines an MVC framework for building user interfaces for web applications, including UI components, state management, event handing, input validation, page navigation, and support for internationalization and accessibility.

There is a newer version: 4.1.0
Show newest version
/*
 * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package javax.faces.component;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 

The presence of this annotation on a * class automatically registers the class with the runtime as a {@link * UIComponent}. The value of the {@link #value} attribute is taken to * be the component-type and the fully qualified class name of * the class to which this annotation is attached is taken to be the * component-class. The implementation must guarantee that for * each class annotated with FacesComponent, found with the * scanning algorithm in section JSF.11.5, {@link * javax.faces.application.Application#addComponent(java.lang.String,java.lang.String)} * is called, passing the derived component-type as the first * argument and the derived component-class as the second * argument. The implementation must guarantee that all such calls to * addComponent() happen during application startup time * and before any requests are serviced.

*/ /** *

* The presence of this annotation on a class that extends * {@link UIComponent} must cause the runtime to register this class as a component suitable for * inclusion in a view. If the createTag attribute is * true, the runtime must create a corresponding Facelet tag handler according to the * rules specified in the attributes of this annotation. *

* */ @Retention(RUNTIME) @Target(TYPE) @Inherited public @interface FacesComponent { /** *

* Components that declare a createTag = true attribute will be placed into this * tag namespace if the namespace attribute is omitted. *

*/ public static final String NAMESPACE = "http://xmlns.jcp.org/jsf/component"; /** *

* The value of this annotation attribute is taken to * be the component-type with which instances of this class of component can be * instantiated by calling * {@link javax.faces.application.Application#createComponent(java.lang.String)}. * If no value is specified, or the value is null, * the value is taken to be the return of calling getSimpleName on the class to * which this annotation is attached and lowercasing the first character. If more than one * component with this derived name is found, the results are undefined. *

* * @return the component type. */ String value() default ""; /** *

* If the value of this attribute is true, the runtime must create a Facelet tag * handler, that extends from {@link javax.faces.view.facelets.ComponentHandler}, suitable for * use in pages under the tag library with namespace given by the value of the * {@link #namespace} attribute. *

* * @return true to create the Facelet tag handler, false otherwise. */ boolean createTag() default false; /** *

* If the value of the {@link #createTag} attribute is true, the runtime must use * this value as the tag name for including an instance of the component annotated with this * annotation in a view. If this attribute is not specified on a usage of this annotation, the * simple name of the class on which this annotation is declared, with the first character * lowercased, is taken to be the value. *

* * @return the tag name. */ String tagName() default ""; /** *

* If the value of the {@link #createTag} attribute is true, the value of this * attribute is taken to be the tag library namespace into which this component is placed. *

* * @return the namespace. */ String namespace() default NAMESPACE; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy