Class UseBeanTag

All Implemented Interfaces:
DynaTag, BeanSource, Tag
Direct Known Subclasses:
UseListTag

public class UseBeanTag extends MapTagSupport implements BeanSource
A tag which instantiates an instance of the given class and then sets the properties on the bean. The class can be specified via a Class instance or a String which will be used to load the class using either the current thread's context class loader or the class loader used to load this Jelly library. This tag can be used it as follows,
 <j:useBean var="person" class="com.acme.Person" name="James" location="${loc}"/>
 <j:useBean var="order" class="${orderClass}" amount="12" price="123.456"/>
 
Version:
$Revision: 155420 $
Author:
James Strachan
  • Constructor Details

    • UseBeanTag

      public UseBeanTag()
    • UseBeanTag

      public UseBeanTag(Class defaultClass)
  • Method Details

    • getBean

      public Object getBean()
      Specified by:
      getBean in interface BeanSource
      Returns:
      the bean that has just been created
    • doTag

      public void doTag(XMLOutput output) throws JellyTagException
      Description copied from interface: Tag
      Evaluates this tag after all the tags properties have been initialized.
      Specified by:
      doTag in interface Tag
      Throws:
      JellyTagException
    • setBean

      protected void setBean(Object bean)
      Allow derived classes to programatically set the bean
    • convertToClass

      protected Class convertToClass(Object classObject) throws MissingAttributeException, ClassNotFoundException
      Attempts to convert the given object to a Class instance. If the classObject is already a Class it will be returned otherwise it will be converted to a String and loaded using the default class loading mechanism.
      Throws:
      MissingAttributeException
      ClassNotFoundException
    • loadClass

      protected Class loadClass(String className) throws ClassNotFoundException
      Loads the given class using the default class loading mechanism which is to try use the current Thread's context class loader first otherise use the class loader which loaded this class.
      Throws:
      ClassNotFoundException
    • newInstance

      protected Object newInstance(Class theClass, Map attributes, XMLOutput output) throws JellyTagException
      Creates a new instance of the given class, which by default will invoke the default constructor. Derived tags could do something different here.
      Throws:
      JellyTagException
    • setBeanProperties

      protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException
      Sets the properties on the bean. Derived tags could implement some custom type conversion etc.

      This method ignores all property names in the Set returned by getIgnorePropertySet().

      Throws:
      JellyTagException
    • validateBeanProperties

      protected void validateBeanProperties(Object bean, Map attributes) throws JellyTagException
      If isIgnoreUnknownProperties() returns true, make sure that every non-ignored (see addIgnoreProperty(String)) property matches a writable property on the target bean.
      Parameters:
      bean - the bean to validate
      attributes - the list of properties to validate
      Throws:
      JellyTagException - when a property is not writeable
    • processBean

      protected void processBean(String var, Object bean) throws JellyTagException
      By default this will export the bean using the given variable if it is defined. This Strategy method allows derived tags to process the beans in different ways such as to register this bean with its parent tag etc.
      Throws:
      JellyTagException
    • getDefaultClass

      protected Class getDefaultClass()
      Allows derived classes to provide a default bean implementation class
    • addIgnoreProperty

      protected void addIgnoreProperty(String name)
      Adds a name to the Set of property names that will be skipped when setting bean properties. In other words, names added here won't be set into the bean if they're present in the attribute Map.
      Parameters:
      name -
    • getIgnorePropertySet

      protected Set getIgnorePropertySet()
      Returns:
      the Set of property names that should be ignored when setting the properties of the bean.
    • isIgnoreUnknownProperties

      public boolean isIgnoreUnknownProperties()
      Returns:
      See Also:
    • setIgnoreUnknownProperties

      public void setIgnoreUnknownProperties(boolean ignoreUnknownProps)
      If this tag finds an attribute in the XML that's not ignored by ignoreProperties and isn't a bean property, should it throw an exception?
      Parameters:
      ignoreUnknownProps - Sets ignoreUnknownProperties.