You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ji...@apache.org> on 2011/04/01 01:52:05 UTC
[jira] [Closed] (TAP5-1415) Binding not found for required
parameter called zone in mixin
[ 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