[ 
https://issues.apache.org/jira/browse/TAP5-1415?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Howard M. Lewis Ship closed TAP5-1415.
--------------------------------------

    Resolution: Invalid
      Assignee: Howard M. Lewis Ship

I do see that there's a challenge with components and mixins: if the components 
change, they can invalidate the mixin after-the-fact.  However, the alternative 
is to freeze the components entirely, which is less acceptable than an 
occasional upgrade problem such as yours.

> Binding not found for required parameter called zone in mixin
> -------------------------------------------------------------
>
>                 Key: TAP5-1415
>                 URL: https://issues.apache.org/jira/browse/TAP5-1415
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.2.0, 5.2.1, 5.2.2, 5.2.3, 5.2.4
>            Reporter: François Facon
>            Assignee: Howard M. Lewis Ship
>
> in Jumpstart v 4.12.2  the page 
> http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/ajaxselect1
>  
> <div t:type="zone" t:id="searchZone" style="background-color: eee; padding: 
> 15px">
>               <form t:type="form" t:id="searchCriteria" style="margin: 0">
>                       <t:errors/>
>                       <t:label for="carMake"/>:
>                       <select t:type="select" t:id="carMake" 
> t:model="carMakes" t:blankLabel="Choose..." 
>                               t:mixins="zoneUpdater" t:clientEvent="change" 
> t:event="changeOfCarMake" t:zone="searchZone"></select>
>       
>                       <t:label for="carModel"/>:
>                       <select t:type="select" t:id="carModel" 
> t:model="carModels" t:blankLabel="Choose..." 
>                               t:mixins="zoneUpdater" t:clientEvent="change" 
> t:event="changeOfCarModel" t:zone="searchZone"></select>
>                       Keywords: <input t:type="TextField" t:id="keyWords" 
>                               t:mixins="zoneUpdater" t:clientEvent="keyup" 
> t:event="changeOfKeyWords" t:zone="searchZone"/> (optional)<br/> 
>                       
>                       <input type="submit" value="Save"/>
>               </form>
>       </div>
>       <br/>
> Use a mixin that declare a parameter called zone.
> /* * The zone to be updated by us. / @Parameter(defaultPrefix = 
> BindingConstants.LITERAL, required = true)
> private String zone;
> this page works fine in 5.1.0.5 but in 5.2.4 an exception occured
> An unexpected application exception has occurred.
> * org.apache.tapestry5.ioc.internal.OperationException
>   Parameter(s) 'ZoneUpdater.zone' are required for 
> org.apache.tapestry5.corelib.components.Select, but have not been bound.
>  
> If I change the parameter name to zoneName, the binding works fine.
> When debugging
> public void bindParameter(String parameterName, Binding binding)
> {
>      if (bindings == null)bindings = 
> CollectionFactory.newCaseInsensitiveMap();
>      bindings.put(parameterName, binding);
> }
> in see the value LiteralBinding[zone: searchZone] for parameterName zone
> the exception occured when isBinding is looking for parameter zone in 
> component searchCriteria which is a form
> According to Mr Lewis Ship
> "This was a bit of unintended consequences ... the Mixin's zone
> parameter was ignored and the Select components (new in 5.2) zone
> parameter was bound instead.  Using zoneupdater.zone="searchZone",
> which is Tapestry's way of identifying, in the template, that its the
> zone parameter of the ZoneUpdater mixin that is bound, should fix it."
> Regards
> François
>  

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to