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

org.metawidget.inspector.faces.UiFacesAttribute Maven / Gradle / Ivy

There is a newer version: 4.2
Show newest version
// Metawidget
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

package org.metawidget.inspector.faces;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Annotates an arbitrary Metawidget attribute, based on a Java Server Faces EL expression.
 * 

* Unlike UiFacesLookup, which fits into a well-defined place within the JSF framework * (ie. f:selectItems), the UiFacesAttribute expression is evaluated by * the Inspector, not by the Metawidget. This means the * Inspector must be able access to FacesContext. In practice this usually * happens automatically, but in some cases it may be necessary to 'combine remote inspections' (see * the Reference Documentation). *

* Note in the event UiFacesAttribute uses an attribute name overlapping with another * UiFacesxxx annotation (eg. UiFacesLookup) the latter will get * precedence. For example... *

* * @UiFacesLookup( "#{foo}" )
* @UiFacesAttribute( name = FacesInspectionResultConstants.FACES_LOOKUP, expression = * "#{!empty bar ? '' : null}" )
*

* ...in general, you should avoid such ambiguous situations. For example, you could instead use... *

* * @UiFacesAttribute( name = FacesInspectionResultConstants.FACES_LOOKUP, expression = * "#{!empty bar ? '' : '#{foo}'}" ) *

* Also consider using FacesInspectorConfig.setInjectThis. *

* * @author Richard Kennard */ @Retention( RetentionPolicy.RUNTIME ) @Target( { ElementType.FIELD, ElementType.METHOD } ) public @interface UiFacesAttribute { /** * Attribute to set. *

* Multiple attributes can be specified if you need to set multiple attributes to the same * expression. */ String[] name(); /** * Value to set the attribute to. Must be an EL expression of the form #{...}. *

* Note EL expressions can include conditions. For example: *

* #{foo.bar ? 'baz' : null}. *

* Also consider using FacesInspectorConfig.setInjectThis. */ String expression(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy