[ 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