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 <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 <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
smime.p7s
Description: S/MIME cryptographic signature
