If you init your model in setupRender it will be null upon form submit (as it is not a render request) - You can use onActivate, onPrepareForSubmit or onPrepare to init the model prior to form submission.
-- Chris On Mon, Nov 17, 2014 at 12:39 PM, D Tim Cummings <t...@triptera.com.au> wrote: > I am trying to understand the new attribute "secure" of the "select" > component. This is either a bug or I don’t understand the attribute. I am > running Tapestry 5.4 beta 22. > > I have copied the code from the Jumpstart7 AJAX filtered grid example > where firstInitials is a List<String> created in the setupRender() method. > > > http://jumpstart.doublenegative.com.au/jumpstart7/examples/ajax/filteredgrid > > The example uses secure="never" and works. However if I use secure="auto" > as in > > <t:select t:id="firstInitial" model="firstInitials" onchange= > "document.getElementById('filterSubmit').click()" secure="auto" /> > > then I get the error message > org.apache.tapestry5.ioc.internal.util.TapestryException > > *Parameter 'model' of component Contact:firstinitial is bound to null. > This parameter is not allowed to be null.* > with stack trace > > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: > Parameter 'model' of component Contact:firstinitial is bound to null. This > parameter is not allowed to be null. [at > classpath:au/com/createng/job/pages/Contact.tml, line 8] > at > org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:275) > at > org.apache.tapestry5.internal.transform.ParameterWorker$3$1.get(ParameterWorker.java:381) > at > org.apache.tapestry5.corelib.components.Select.conduit_get_model(Select.java) > at org.apache.tapestry5.corelib.components.Select.toValue(Select.java:292) > at > org.apache.tapestry5.corelib.components.Select.processSubmission(Select.java:200) > at > org.apache.tapestry5.corelib.base.AbstractField.processSubmission(AbstractField.java:260) > at > org.apache.tapestry5.corelib.base.AbstractField.access$100(AbstractField.java:41) > at > org.apache.tapestry5.corelib.base.AbstractField$ProcessSubmission.execute(AbstractField.java:103) > at > org.apache.tapestry5.corelib.base.AbstractField$ProcessSubmission.execute(AbstractField.java:97) > at > org.apache.tapestry5.corelib.components.Form.executeStoredActions(Form.java:739) > ... 100 more > > > This is a really bad error message because it took me ages to realise it > was because of the change I had made to the secure attribute (which I had > removed thinking that it was something to do with https). I get the same > exception if I leave the attribute out completely. Yet looking at the > source code for Select.java, the default should be select="auto" and allow > the model to be null. > > /** > * Controls whether the submitted value is validated to be one of the > values in > * the {@link SelectModel}. If "never", then no such validation is > performed, > * theoretically allowing a selection to be made that was not > presented to > * the user. Note that an "always" value here requires the > SelectModel to > * still exist (or be created again) when the form is submitted, > whereas a > * "never" value does not. Defaults to "auto", which causes the > validation > * to occur only if the SelectModel is present (not null) when the > form is > * submitted. > * > * @since 5.4 > */ > @Parameter(value = BindingConstants.SYMBOL + ":" + > ComponentParameterConstants.VALIDATE_WITH_MODEL, defaultPrefix = > BindingConstants.LITERAL) > private SecureOption secure; > > This appears to be related to the bug > > https://issues.apache.org/jira/browse/TAP5-2204 Select component fails if > SelectModel doesn't exist on submit > > which was resolved in November last year. > > Regards > > Tim > > >