You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Tom Götz <to...@richmountain.de> on 2015/05/04 15:59:21 UTC

Re: Could not clear select2Choice component model value.

Done: https://github.com/wicketstuff/core/pull/402

Cheers,
   -Tom



> On 30.04.2015, at 09:31, Martin Grigorov <mg...@apache.org> wrote:
> 
> Hi Tom,
> 
> Please send a PR with your suggested changes/improvements and we will
> discuss them.
> Thanks!
> 
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
> 
> On Thu, Apr 30, 2015 at 10:27 AM, Tom Götz <to...@decoded.de> wrote:
> 
>> I found the source of the mentioned changes:
>> 
>> https://github.com/wicketstuff/core/commit/79781d83cf11ac63d2e661328fa7176b93184c64
>> 
>>   -Tom
>> 
>> 
>>> On 30.04.2015, at 08:58, Tom Götz <to...@decoded.de> wrote:
>>> 
>>> See my inline comments
>>> 
>>>> On 30.04.2015, at 04:29, Maxim Solodovnik <so...@gmail.com> wrote:
>>>> 
>>>> 
>>>> The changes I have made were (most probably) merged from original Igor's
>>>> code (https://github.com/ivaynberg/wicket-select2)
>>> 
>>> I can’t find the "List<T> choices“ property of AbstractSelect2Choice
>> anywhere in Igor’s original code, so I don’t know where it should have been
>> merged from.
>>> 
>>> What should be the purpose of having to provide a ChoiceProvider *and* a
>> list of choices?! Currently you have to provide both to avoid an exception
>> upon construction, which is … weird ;) and breaks existing implementations.
>>> 
>>> 
>>>> 1) I believe this is since AbstractSelect2Choice is parent class for for
>>>> Single and Multi choices.
>>> 
>>> That is so, but what does this explain? ;)
>>> 
>>> 
>>>> 2) the code was refactored a bit, so line numbers were changed. This
>>>> constructor:
>>>> 
>> https://github.com/wicketstuff/core/blob/wicket-6.x/jdk-1.6-parent/select2-parent/select2/src/main/java/org/wicketstuff/select2/AbstractSelect2Choice.java#L109
>>>> seems to not throwing any exceptions
>>> 
>>> Yeah, but another does. This pattern does not make any sense to me:
>>> 
>>> class Foo {
>>> 
>>>   public Foo(Object a) {
>>>       this(a, null);
>>>   }
>>> 
>>>   public Foo(Object a, Object b) {
>>>       if (b == null)
>>>           throw new IllegalArgumentException();
>>>       this.a = a;
>>>       this.b = b;
>>>   }
>>> }
>>> 
>>> 
>>>> 3) you can call constructor mentioned in 2 to avoid exception.
>>> 
>>> …
>>> 
>>> 
>>>> 4) I guess renderChoice method is designed to render single choice
>> object,
>>>> you can override it (for ex. to add your own properties to each choice)
>>>> other 2 methods are private helpers
>>> 
>>> renderChoice is called from within renderChoices which is called from
>> within renderHead. But only if !isAjax(), and:
>>> 
>>> public boolean isAjax()
>>> {
>>>  return provider != null;
>>> }
>>> 
>>> …?
>>> 
>>> That means: if no ChoiceProvider is set, then use the static List<T>
>> choices, but if you don’t provide a ChoiceProvider in the constructor
>> you’ll get an IllegalArgumentException.
>>> 
>>> This code is broken and doesn’t make any sense *to me*, or I didn’t get
>> it yet ;-)
>>> 
>>> My proposal is:
>>> 
>>> if nobody can tell which problem should be solved with the introduced
>> List<T> choices I would revert it to get a working implementation again, as
>> it is currently unusable.
>>> 
>>> Personally, I need to upgrade the select.js library in our project,
>> therefor I was looking at wicketstuff-select2, as we still use the original
>> wicket-select2 implementation. The current state of it leaves mit three
>> options, in order of priority:
>>> 
>>> a)
>>> convince the wicketstuff-select2 maintainers to revert the code to a
>> working state, which I am currently doing ;-)
>>> 
>>> b)
>>> fork wicketstuff-select2 and provide own (working) implementation
>>> 
>>> c)
>>> stick with Igor’s original code, which means: no upgrades to select2.js
>>> 
>>> 
>>> Maybe someone else can shed some light on this?
>>> 
>>> Cheers,
>>>  -Tom
>>> 
>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>> 
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org