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.4, 5.2.3, 5.2.2, 5.2.1, 5.2.0
            Reporter: François Facon


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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to