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!
> 

Reply via email to