And another thing is that reset != clear. We have a reset button on one page but all the action does is it calls the page's backing bean init() again.
Kalle > -----Original Message----- > From: Aaron Bartell [mailto:[EMAIL PROTECTED] > Sent: Wednesday, April 27, 2005 12:07 PM > To: 'MyFaces Discussion' > Subject: RE: resetting a form > > I was actually thinking the opposite. As long as I can > remember back I have never used a form reset button (not even > when I was doing my web programming with RPG CGI or PHP). I > guess I would look at the scenario for why the user would > ever want to clear a form. Is it because they want to cancel > the current process they are going through, then give them a > cancel button. Is it because they want to start completely > over on the page? - I have never needed to do this in my life > as a web page consumer. I might change a couple values in > some fields but I never use the form reset button the web > pages always provide. Just seems so meaningless (and > dangerous because of data loss by accident), but maybe that > is just me. > > Aaron Bartell > http://mowyourlawn.com > > -----Original Message----- > From: Jon Travis [mailto:[EMAIL PROTECTED] > Sent: Wednesday, April 27, 2005 12:58 PM > To: MyFaces Discussion > Subject: Re: resetting a form > > Isn't he talking about things which have inputs? Clearing > the ID is just resetting a read-only parameter, which is a > little different than UIInput components. > > What I've been using is a method which recurses through a > tree, checking if components are UIInputs. If they are, it > just does component.setValue(null), and > component.setSubmittedValue(null). > > It seems like this would be a _very_ common thing for people > to want to do, but I'm surprised I haven't found it or > something similar in any documentation I have (including Kito's book) > > -- Jon > > > On Apr 27, 2005, at 2:48 AM, CsÃk Norbert wrote: > > > Check out my clear button. In faces-config I have a navigation rule > > for the "clear" outcome: from page.jspx to page.jspx. It > works for me. > > > > > > public class PageBean { > > private String id; > > private String name; > > > > public PageBean() { > > } > > > > public String save() { > > FacesContext.getCurrentInstance().addMessage(null, new > > FacesMessage("Saved.")); > > > > id = "15"; > > > > return "success"; > > } > > > > public String delete() { > > FacesContext.getCurrentInstance().addMessage(null, new > > FacesMessage("Deleted.")); > > > > return clear(); > > } > > > > public String clear() { > > id = ""; > > > > return "clear"; > > } > > > > public String editDetail() { > > FacesContext.getCurrentInstance().addMessage(null, new > > FacesMessage("Detail.")); > > > > return "success"; > > } > > > > public boolean isLoaded() { > > return getId() != null && !getId().equals(""); > > } > > > > public String getId() { > > return (id == null) > > ? > > > (String)FacesContext.getCurrentInstance().getExternalContext().getRequ > > e > > stParameterMap().get("form:id") > > : id > > ; > > } > > > > public void setId(String id) { > > this.id = id; > > } > > > > public String getName() { > > return name; > > } > > > > public void setName(String name) { > > this.name = name; > > } > > } > > > > And the JSF page: > > > > <?xml version='1.0' encoding='ISO-8859-2'?> <jsp:root > > xmlns="http://www.w3.org/1999/xhtml" > > xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" > > xmlns:f="http://java.sun.com/jsf/core" > > xmlns:h="http://java.sun.com/jsf/html"> > > <f:view> > > <html> > > <jsp:output omit-xml-declaration="false" > > doctype-root-element="html" > > > > doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > > doctype-public="-//W3C//DTD XHTML 1.0 > Strict//EN"/> > > <jsp:directive.page > contentType="text/html;charset=ISO-8859-2"/> > > <head> > > <meta http-equiv="Content-Type" > > content="text/html; charset=ISO-8859-2"/> > > <title> > > Page > > </title> > > </head> > > <body> > > <h:form id="form"> > > <h:panelGrid columns="1"> > > <h:messages layout="table"/> > > <h:panelGroup> > > <h:commandButton value="New" > action="#{PageBean.clear}" > > immediate="true"/> > > <h:commandButton value="Save" > action="#{PageBean.save}"/> > > <h:commandButton value="Delete" > > action="#{PageBean.delete}" > > immediate="true" > > rendered="#{PageBean.loaded}"/> > > </h:panelGroup> > > > > <h:inputHidden id="id" value="#{PageBean.id}"/> > > > > <h:panelGrid columns="2"> > > <h:outputLabel > style="color:red" value="NÃv"/> > > <h:inputText > value="#{PageBean.name}" required="true"/> > > <h:outputLabel value="ID"/> > > <h:outputText value="#{PageBean.id}"/> > > <h:outputLabel value="TÃpus"/> > > <h:commandButton > action="#{PageBean.editDetail}" value="Szerkeszt" > > disabled="#{!PageBean.loaded}"/> > > </h:panelGrid> > > > > </h:panelGrid> > > </h:form> > > </body> > > </html> > > </f:view> > > </jsp:root> > > > > > > > > On 4/26/05, Vincent SEVEL <[EMAIL PROTECTED]> wrote: > >> > >> > >> > >> Hi, I am trying to figure out the best/simplest way to > reset a form > >> whose fields are associated with a backing bean. I have found one > >> incomplete solution and would like to hear from other people. > >> > >> > >> > >> I have got a person.jsp, which contains: > >> > >> Ã Input text bound to #{person.lastname}, required=true > >> > >> Ã Input text bound to #{person.firstname} > >> > >> Ã Button bound to #{personPage.console} that displays the > >> content of > >> the form in the console > >> > >> Ã Button bound to #{personPage.reset} that blanks > out all the > >> fields > >> from the form > >> > >> > >> > >> 1) Initially I just removed the "person" object from the > request map > >> and > >> returned null from the reset action. This caused the form to be > >> reset, but > >> also an validation error message to be displayed on the next page > >> about the > >> first field not being filled (ie: it is required). > >> > >> > >> > >> 2) Then, I set immediate='true' on the reset button, and > rendered the > >> response directly from the reset action (ie: > >> FacesContext.getCurrentInstance().renderResponse()). > Although this > >> skipped > >> the validation phase, it did not repopulate the components > from the > >> value > >> binding expressions (ie: it does not blank out the form). > >> > >> > >> > >> 3) The only and last solution I can see at this time would be to > >> findComponent() the lastname & firstname fields, blank them out > >> manually and > >> renderResponse() immediately. But this extremely tedious > and error > >> prone. > >> > >> > >> > >> In short, I would like to deactivate validation and > conversion for > >> some > >> special actions, but still feed from the backing bean during the > >> render > >> phase. Any ideas? > >> > >> > >> > >> Thanks, source follows. > >> > >> Vincent > >> > >> > >> > >> person.jsp > >> > >> <f:view> > >> > >> <h:messages styleClass="error" layout="table" > >> showDetail="true" > >> showSummary="false" tooltip="true"/> > >> > >> <h:form> > >> > >> Lastname: <h:inputText id="lastname" > >> value="#{person.lastname}" required="true"/><p/> > >> > >> Firstname: <h:inputText id="firstname" > >> value="#{person.firstname}"/><p/> > >> > >> <h:commandButton value="Console" > >> action="#{personPage.console}"/> > >> > >> <h:commandButton value="Reset" > >> immediate="true" > >> action="#{personPage.reset}"/> > >> > >> </h:form> > >> > >> </f:view> > >> > >> > >> > >> public class Person { > >> > >> private String lastname; > >> > >> private String firstname; > >> > >> â > >> > >> > >> > >> public class PersonPage { > >> > >> > >> > >> private Map getRequestMap() { > >> > >> return > >> > FacesContext.getCurrentInstance().getExternalContext().getRequ > estMap() > >> ; > >> > >> } > >> > >> > >> > >> public String console() { > >> > >> Person person = (Person) getRequestMap().get("person"); > >> > >> System.out.println(person.getLastname()+" > >> "+person.getFirstname()); > >> > >> return null; > >> > >> } > >> > >> > >> > >> > >> > >> public String reset() { > >> > >> getRequestMap().remove("person"); > >> > >> FacesContext.getCurrentInstance().renderResponse(); // > will skip > >> the > >> validation and conversion phases, but will not refresh from the > >> backing bean > >> > >> return null; > >> > >> } > >> > >> } > > > > > > -- > > CsÃk Norbert http://norbert.web.elte.hu/ > > ProgramtervezÅ matematikus > > Trilobita Informatikai Rt. - rendszertervezÅ fejlesztÅmÃrnÃk > > ___ keep sm:)ing _________________________ooo__C( O O )L__ooo__ > > http://www.aion.hu/ - A csik.NET otthona > > http://www.spreadfirefox.com/ - Rediscover the web > > LÃgy pontos: MÃrj mikro-millimÃterben! JelÃlj krÃtÃval! > VÃgj baltÃval! >

