Hi Johan,

Ok, I understand.
Indeed, my model is a property in a bean that has the primitive type 
boolean.

Even though I have a workaround now, I would appreciate such a fix.
If nobody disagrees I am happy to make a JIRA issue for it.

Regards,
     Erik.


Johan Compagner schreef:
> 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] 
> <mailto:[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]>
>     >> <mailto:[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/
>     <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>
>     >>    
>     <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>
>     >>     <mailto:Wicket-user@lists.sourceforge.net
>     <mailto:Wicket-user@lists.sourceforge.net>>
>     >>     https://lists.sourceforge.net/lists/listinfo/wicket-user
>     <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
>     
> <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
>     <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
>     
> <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
>     <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