I don't think so. Check out this scenario: I have a form, with input fields, and a table under it containing the saved data. When the user clicks on a row in the table, the row loaded in the form. Then the user can modify it, and click on the save button. Then he decides to insert a new row: he clicks on the New button, because the modified data is still in the form. The forms gets empty, he can start inserting a new row.
On 4/27/05, Aaron Bartell <[EMAIL PROTECTED]> wrote: > 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().getReque > > 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().getRequestMap() > >> ; > >> > >> } > >> > >> > >> > >> 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! > > -- 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!

