[
https://issues.apache.org/jira/browse/CLK-744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12979316#action_12979316
]
Sander van Grieken commented on CLK-744:
----------------------------------------
"How will the label be rendered? It will depend on how Select interprets it."
Just like the Option(String) constructor interprets it? I don't see the
ambiguity.. Select can only interpret a String in one way, no?
If I look at AWT for example, the combobox accepts just strings as listelements
just fine. The label/name paradigm is basically a low-level technical construct
for uniquely identifying selected item(s) across HTTP roundtrips. This is
something a high-level UI kit like click should transparently provide, if not
explicitly specified by the developer.
One could then also check all added strings for uniqueness (or illegal
characters), and warn or throw an exception when not all Strings are suitable
for autowrapping.
> Select control's setValue is not usable due to insufficient wrapping
> --------------------------------------------------------------------
>
> Key: CLK-744
> URL: https://issues.apache.org/jira/browse/CLK-744
> Project: Click
> Issue Type: Bug
> Components: core
> Affects Versions: 2.3.0-M1, 2.2.0
> Reporter: Sander van Grieken
> Attachments: SelectTestPage.java
>
>
> When calling setValue on a Select instance, it bombs out while rendering,
> regardless whether a String or an Option is passed.
> Passing an Option instance causes it to be 'toString'-ed as an Object (i.e.
> 'org.apache.click.control.opt...@1c154a3') when retrieving the selected value
> again.
> Passing a String causes it to throw a java.lang.IllegalArgumentException:
> Select option class not instance of Option or OptionGroup: java.lang.String
> at org.apache.click.control.Select.render(Select.java:998)
> I have modified the render(HtmlStringBuffer buffer) method in Select.java to
> additionally check for String instances, and in that case wrap it into an
> Option, and that works fine.
> if (object instanceof String) {
> Option option = new Option(object);
> option.render(this, buffer);
> } else ...
> The setValue method should probably be overridden from Field to also support
> the Option case
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.