The point is that I do not want tri-state logic. That is why the 
property has type boolean and not Boolean. If you want tri-state logic, 
you can (and intuitively will) use non-primitive properties in your 
model objects.

Anyway, you could always use the same values as java uses to initialize 
primitive members. So thats 0, '\0' and false.

You say it is very context dependent. I agree there. But I also find 
that context to be very limited, namely to models of a primitive type, a 
well known exception to Java's object orientedness.

Regards,
     Erik.

Martijn Dashorst wrote:
> Keep it as current. If you want tri-state logic, then you have to
> implement that. What are you going to do with int, long, double,
> float? make it 0? make it -1?
>
> Defaulting to false is very context dependent, and shouldn't be
> implemented as such.
>
> Martijn
>
> On 1/9/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
>   
>> my checkbox works fine:
>>
>> class MyDataObject
>> {
>>  Boolean myBoolean;
>>
>>  void setMyBoolean(Boolean b)
>>  Boolean getMyBoolean()
>> }
>>
>> so it is not directly the checkbox. But if you map it to a boolean
>> (primitive) then you don't have
>> the three-state thing yes. (null, false, true)
>>
>> So i dont know if this is a bug or not that really needs to be fixed.
>> Because what is the fix?
>>
>> I can't do what you do here. Because if it is a Boolean object then
>> null/empty string is valid.
>>
>> Maybe for booleans we can make an exception that null will be false in the
>> converter
>> What do others think?
>>
>> johan
>>
>>
>>
>> On 1/9/07, Erik van Oosten <[EMAIL PROTECTED]> wrote:
>>     
>>> Johan,
>>>
>>> I got it working as below. Shall I create a Jira issue for this? I think
>>> it would be more logical if checkbox could deal with cleared input.
>>>
>>>      Erik.
>>>
>>>
>>>         // The reset button
>>>         Button resetButton = new Button("resetbutton") {
>>>             /** [EMAIL PROTECTED] */
>>>             protected void onSubmit() {
>>>                 // Clear the form
>>>                 form.visitChildren(FormComponent.class, new
>>> Component.IVisitor() {
>>>                     public Object component(Component component) {
>>>                         FormComponent formComponent =
>>>       
>> ((FormComponent)
>>     
>>> component);
>>>                         if (formComponent instanceof CheckBox) {
>>>                             ((CheckBox)
>>> formComponent).setModelObject("false");
>>>                         } else {
>>>                             formComponent.clearInput();
>>>                             formComponent.updateModel();
>>>                         }
>>>                         return
>>> Component.IVisitor.CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
>>>                     }
>>>                 });
>>>             }
>>>         };
>>>         // Perform only the onSubmit, no validation
>>>         resetButton.setDefaultFormProcessing (false);
>>>         form.add(resetButton);
>>>
>>>
>>>
>>> Erik van Oosten wrote:
>>>       
>>>> Yes, correct. The model should be cleared as well.
>>>> And it indeed uses setDefaultFormProcessing(false).
>>>>
>>>> The approach your describing below will throw exceptions for checkboxes:
>>>>
>>>> WicketMessage: unable to set object null, model:
>>>>
>>>>         
>> Model:classname=[wicket.model.PropertyModel]:attached=true:[EMAIL PROTECTED]
>> ]:expression=[searchInHistoricNames]:propertyType=[null],
>>     
>>>> called with component [MarkupContainer [Component id = formelement, page
>>>> = nl.amsterdam.rbrb.web.search.SearchPage, path =
>>>>
>>>>         
>> 2:maincontent:searchform:form:formElements:2:inputfragment:
>> formelement.CheckBox,
>>     
>>>> isVisible = true, isVersioned = false]]
>>>>
>>>> Root cause:
>>>>
>>>> wicket.util.convert.ConversionException: Can't convert
>>>>         
>> null value to a
>>     
>>>> primitive class: boolean for setting it on
>>>>
>>>>         
>> [EMAIL PROTECTED]
>>     
>>>> at
>>>>
>>>>         
>> wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(Ljava.lang.Object;Ljava.lang.Object;Lwicket.util.convert.IConverter;)V(
>> PropertyResolver.java:838)
>>     
>>>> at
>>>>
>>>>         
>> wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(Ljava.lang.Object;Lwicket.util.convert.IConverter;)V(PropertyResolver.java:447)
>>     
>>>> at
>>>> wicket.util.lang.PropertyResolver.setValue
>>>>         
>> (Ljava.lang.String;Ljava.lang.Object;Ljava.lang.Object;Lwicket.util.convert.IConverter;)V(PropertyResolver.java:136)
>>     
>>>> at
>>>>
>>>>         
>> wicket.model.AbstractPropertyModel.onSetObject(Lwicket.Component;Ljava.lang.Object;)V(
>> AbstractPropertyModel.java:182)
>>     
>>>> at
>>>>
>>>>         
>> wicket.model.AbstractDetachableModel.setObject(Lwicket.Component;Ljava.lang.Object;)V(AbstractDetachableModel.java:131)
>>     
>>>> at
>>>> wicket.Component.setModelObject
>>>>         
>> (Ljava.lang.Object;)Lwicket.Component;(Component.java:2042)
>>     
>>>> at
>>>>
>>>>         
>> wicket.markup.html.form.FormComponent.updateModel()V(FormComponent.java:840)
>>     
>>>> at
>>>> nl.amsterdam.rbrb.web.form.FormPanel$5.component
>>>>         
>> (Lwicket.Component;)Ljava.lang.Object;(FormPanel.java:214)
>>     
>>>> <--- the line with formComponent.updateModel();
>>>>
>>>>
>>>> Regards,
>>>>      Erik.
>>>>
>>>>
>>>>
>>>>
>>>> Johan Compagner wrote:
>>>>
>>>>         
>>>>> why do you want to call updateFormComponentModels?
>>>>> You also want to clear all model data? So the models already did get
>>>>> some data from a previous request?
>>>>> (i take the reset button has setDefaultFormProcessing(false) ?)
>>>>>
>>>>> but why not do this:
>>>>>
>>>>>  form.visitChildren(FormComponent.class, new
>>>>> Component.IVisitor() {
>>>>>                     public Object component(Component component) {
>>>>>                         ((FormComponent) component).clearInput();
>>>>>                         ((FormComponent) component).updateModel();
>>>>>                         return
>>>>> Component.IVisitor.CONTINUE
>>>>>
>>>>>     _TRAVERSAL_BUT_DONT_GO_DEEPER;
>>>>>                         }
>>>>>                     });
>>>>>
>>>>>
>>>>> On 1/9/07, *Erik van Oosten* < [EMAIL PROTECTED]
>>>>> <mailto:[EMAIL PROTECTED]>> wrote:
>>>>>
>>>>>     Hi,
>>>>>
>>>>>     I am trying the make a reset button (clears all fields) with code
>>>>>     below.
>>>>>     According to the class comment of Form I can call
>>>>>     updateFormComponentModels, however that method is not visible.
>>>>>
>>>>>     What can I do to get the desired effect? I am using wicket-1.2.4.
>>>>>
>>>>>     Regards,
>>>>>          Erik.
>>>>>
>>>>>
>>>>>             // The reset button
>>>>>             Button resetButton = new Button("resetbutton") {
>>>>>                 /** [EMAIL PROTECTED] */
>>>>>                 protected void onSubmit() {
>>>>>                     // Clear the form
>>>>>                     form.visitChildren(FormComponent.class , new
>>>>>     Component.IVisitor() {
>>>>>                         public Object component(Component component) {
>>>>>                             ((FormComponent) component).clearInput();
>>>>>                             return
>>>>>
>>>>>           
>> Component.IVisitor.CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
>>     
>>>>>                         }
>>>>>                     });
>>>>>     *                form.updateFormComponentModels();   // <------
>>>>>           
>> method
>>     
>>>>>     not visible
>>>>>     *            }
>>>>>             };
>>>>>             // Perform only the onSubmit, no validation
>>>>>
>>>>>           
>> resetButton.setDefaultFormProcessing(false);
>>     
>>>>>             form.add(resetButton);
>>>>>
>>>>>
>>>>>
>>>>>     --
>>>>>     Erik van Oosten
>>>>>     http://www.day-to-day-stuff.blogspot.com/
>>>>>
>>>>>
>>>>>
>>>>>           
>> -------------------------------------------------------------------------
>>     
>>>>>     Take Surveys. Earn Cash. Influence the Future of IT
>>>>>     Join SourceForge.net 's Techsay panel and you'll get the chance to
>>>>>     share your
>>>>>     opinions on IT & business topics through brief surveys - and earn
>>>>>           
>> cash
>>     
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>     
>> <http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>     
>>>>>     _______________________________________________
>>>>>     Wicket-user mailing list
>>>>>     Wicket-user@lists.sourceforge.net
>>>>>     <mailto:Wicket-user@lists.sourceforge.net>
>>>>>
>>>>>           
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>     
>>>>>
>>>>>           
>> ------------------------------------------------------------------------
>>     
>>>>>           
>> -------------------------------------------------------------------------
>>     
>>>>> Take Surveys. Earn Cash. Influence the Future of IT
>>>>> Join SourceForge.net's Techsay panel and you'll get the chance to share
>>>>>           
>> your
>>     
>>>>> opinions on IT & business topics through brief surveys - and earn cash
>>>>>
>>>>>           
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>     
>> ------------------------------------------------------------------------
>>     
>>>>> _______________________________________________
>>>>> Wicket-user mailing list
>>>>> Wicket-user@lists.sourceforge.net
>>>>>
>>>>>           
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>     
>>>>>           
>>>>         
>>> --
>>> Erik van Oosten
>>> http://www.day-to-day-stuff.blogspot.com/
>>>
>>>
>>>
>>>       
>> -------------------------------------------------------------------------
>>     
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to share
>>>       
>> your
>>     
>>> opinions on IT & business topics through brief surveys - and earn cash
>>>
>>>       
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>     
>>> _______________________________________________
>>> Wicket-user mailing list
>>> Wicket-user@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>>
>>>       
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys - and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>
>> _______________________________________________
>> Wicket-user mailing list
>> Wicket-user@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
>>
>>
>>
>>     
>
>
>   

-- 
Erik van Oosten
http://www.day-to-day-stuff.blogspot.com/


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to