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 >