Hello,

comments are inline...


----- Original Message -----
From: Gary VanMatre
[mailto:[EMAIL PROTECTED]
To: [email protected]
Sent: Fri, 28 Jul
2006 03:23:37 +0200
Subject: Re: "binding" attribute of JSF standard
components


> >From: René Zanner <[EMAIL PROTECTED]> 
> >
> > Hi all, 
> > 
> > unfortunately the "binding" attribute isn't standard for all JSF
> components. 
> > Will that change in the future? I think it's a required attribute when
> trying to 
> > be conform to the JSF standard... 
> >
> 
> I believe that the next version of JSF, 1.2, will make the Converter,
> Listener and Validator have a binding attribute.  In 1.1, it's only
> components.  This will be a really nice feature.
> 
> 
> 
> > Otherwise I'm forced to inherit from the standard components provided by
> clay 
> > just to provide the "binding" attribute: 
> > 
> ><component jsfid="my:dataTable" extends="dataTable">
> >  <attributes>
> >    <set name="binding" value="@binding" />
> >  </attributes>
> ></component>
> > 
> 
> Actually, you don't have to extend an existing definition to define a new
> attribute. The inheritance you see in the default clay-config.xml is only
> taking advantage of the metadata inheritance for reuse.
> 
> 
> http://svn.apache.org/viewvc/shale/framework/trunk/shale-clay/src/main/resources/META-INF/clay-config.xml?view=markup
> 
> 
> When you extend an existing "top-level" component definition, it inherits
> the attributes of it's parent definition. The attribute has three
> "attributes", name, value and bindingType. The "name" attribute is required
> but the other values will be inherited or can be overridden by the extending
> component definition.
> 


Hey - that's cool that "binding" made it into the new top-level component 
definition "baseComponent"!  In my current version of Shale this component 
definition is missing (together with the binding attribute). Maybe it was added 
only recently, but - hey! - that's developing on the edge of technology ;o) ...


> 
> There are three enumerations of bindingType. This value tells the clay
> component how to handle attributes that contain EL. 
> VB - Use Value Binding
> MB - Use Method Binding
> None - No use of EL.  The value passes through
> Early - EL evaluated before setting the component property/attribute. 
> Most of the component properties are value binding (VB). The method binding
> (MB) is really more for documentation. We have to know what type of
> parameters are required for MB. There are hard-coded assumptions.  For
> example we know an attribute named "action" is a method binding expression.
> 
> The Early type would be like a JSP tag evaluating the expression before it's
> passed on to the component and the None option mean not to inspect for EL,
> just pass the sting onto the component.
> 
> 
> > Is it possible to enforce it being a Value Binding (e.g. via
> bindingType="VB"?)? 
> > Other values are not allowed since the value must refer to a UIComponent 
> > attribute of a backing bean. 
> > 
> 
> 
> The attribute value of bindingType is the enforcement.  It's kind of like
> the TDL in JSP terms.
> 


By saying "enforced" I meant "enforced at runtime". So, is the bindingType 
enforced at runtime? When there's no value binding given for an attribute of 
bindingType "VB", I'll get an exception?


> The component definition is bound to the html node by jsfid (there are also
> 11 implicit mappings).  Attributes in the html nodes overrides/extends
> attributes in the component definition.  Attributes defined in the html node
> that are not defined in the component definition are made into symbols.
> 
> 
> > Without this attribute I cannot use something like this in my HTML views: 
> > 
> > 
> ><table jsfid="my:dataTable" binding="#{tableView.dataTable}" ...>
> >   ...
> ></table>
> > 
> > The "binding" is required for dataTable when trying to access the
> currently 
> > selected row after clicking on a command link in a specific row. In this
> case 
> > the row clicked on is contained in the attribute "rowData" of the
> dataTable: 
> > dataTable.getRowData() gives the Object associated with the row in which 
> > occurred the mouse click. 
> > 
> 
> Ah, that's a good tip.  I never thought about handling it that way.  That
> would 
> make your links very clean.  That's better than having to define param's.
> 
> 
> > Cheers, 
> > 
> > René
> 
> Gary 
> 

René

Reply via email to