Hi,

javax.faces.component.EditableValueHolder.resetValue()  and/or listener
like
http://myfaces.apache.org/trinidad/trinidad-api/tagdoc/tr_resetActionListener.html
 does not solve it?

Kočičák

Mark Struberg píše v Po 30. 05. 2011 v 13:19 +0100:
> Sounds like a good idea. 
> 
> But shouldn't that be handled via the JSF EG?
> Such a behaviour would need to be written in the spec to be reliable, isn't?
> 
> LieGrue,
> strub
> 
> --- On Mon, 5/30/11, Cagatay Civici <cagatay.civ...@gmail.com> wrote:
> 
> > From: Cagatay Civici <cagatay.civ...@gmail.com>
> > Subject: Clear Input Values
> > To: "MyFaces Development" <dev@myfaces.apache.org>
> > Date: Monday, May 30, 2011, 8:12 AM
> > Hi all,
> > 
> > I'd like to discuss something I've been thinking about
> > lately. How to clear forms easily when validation fails?
> > 
> > Consider this simple case;
> > 
> > <h:form>
> > 
> >                
> > <h:messages />
> >     
> >                
> > <h:inputText value="#{pprBean.firstname}"
> > required="true"/>
> >                
> > <h:inputText value="#{pprBean.surname}"
> > required="true"/>
> > 
> >                
> > <h:commandButton value="Save">
> >                
> >     <f:ajax render="@form"
> > execute="@form"/>
> >                
> > </h:commandButton>
> > 
> >                
> > <h:commandButton value="Reset"
> > actionListener="#{pprBean.reset}">
> >                
> >     <f:ajax render="@form"
> > execute="@this"/>
> >                
> > </h:commandButton>
> >            
> >     
> >                
> > <h:outputText value="#{pprBean.firstname}" id="display"
> > />
> >            
> >     
> > </h:form>
> > 
> > Bean;
> > 
> > private String firstname, surname;
> > 
> >     public void reset() {
> >         firstname = null;
> >         surname = null;
> >     }
> > 
> > So when you run this, if one of the field is empty and the
> > other is not, validations fails and message is displayed.
> > Problem happens when reset button is clicked to reset the
> > form values. At processValidations phase UIInput saves the
> > converted value at state
> > and since validation failed, update model is not executed
> > so local value is never cleared. Clicking reset, clears the
> > bean's values but inputText will not use the bound value and
> > use the one kept in state as well ending up a confusing
> > behavior. I've seen this in many forums.
> > 
> > I know wiki's like this;
> > 
> > http://wiki.apache.org/myfaces/ClearInputComponents
> > 
> > But I mean shouldn't this work as expected? Proposed
> > solutions seem way too hard just to clear form values.
> > (component binding and calling resetValue(), new view,
> > javascript etc.)
> > 
> > If at processValidations phase, local value is not stored
> > in state, I think that will make the code above work, but
> > I'm not sure if there will be any side effects. Does anyone
> > know why converted local value is kept at state by calling
> > setValue().
> > 
> > Cagatay
> 


Reply via email to