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!

Reply via email to