OK, things are working well with RequestVar, but now I need to know
how to kill it!

After I create and save my record, if I refresh the browser, I get
another record created. I did a temporary hack-fix with:

if(! myRecord.saved_?)

but I would just like to kill the RequestVar after the first round of
record creation-saving.

In terms of your example above, how would I do that?



On Jun 8, 7:18 am, Derek Chen-Becker <dchenbec...@gmail.com> wrote:
> Generally you can either use RequestVars or a StatefulSnippet class to keep
> the values around on form resubmission. If you're using a Mapper class, you
> really just need one RequestVar to hold your Mapper instance. For example,
> if I had a Mapper class for a person with first name, last name and email, I
> could do something like this in my snippet class:
>
> ...
>   // Set the up the RequstVar to initialize a new MyUserClass by default
>   object userVar extends RequestVar[MyUserClass](MyUserClass.create)
>
>   def editMyUser (xhtml : NodeSeq) : NodeSeq = {
>     // We define a val to capture the current value of the userVar. This
> will be used to reinject later, as well
>     // as for current access
>     val current = userVar.is
>     ...
>     def saveMyUser () {
>       current.validate match { ...
>         ...
>         current.save
>       }
>     }
>
>     bind("user", xhtml,
>            // First we re-inject the current MyUserClass instance using a
> hidden field
>            "current" -> SHtml.hidden(() => userVar(current))
>            // normal fields follow, e.g.
>            "name" -> SHtml.text(current.name.is, current.name(_))
>            // alternatively, you could do both steps in the first form
> field:
>            "name" -> SHtml.text(current.name.is, { in => userVar(current);
> current.name(in) })
>            ...
>     )
>   }
> ...
>
> Let me know if you have any questions on that.
>
> Derek
>
> On Fri, Jun 5, 2009 at 9:47 PM, g-man <gregor...@gmail.com> wrote:
>
> > I now have the due date arriving OK from the jQuery datepicker, and I
> > cobbled together some ugliness to give days left until the ToDo due
> > date, so that is good.
>
> > My problem now is since we are not using the 'magic' of the _toForm
> > methods for the form elements, I have to set each var value for the
> > model field from the input SHtml data, as was done in the PocketChange
> > app AddEntry.scala file.
>
> > What is happening is that the initialization for each var is resetting
> > the form if validation fails, so I guess I need to institute some
> > RequestVars to remember the form values for resubmission, right?
>
> > All my questions will take take the form of 'how to' recipes of
> > foundational webapp elements, as you can see. My plan is to develop
> > them for a 'cookbook' section of the wiki, so that's why I am asking
> > one simple conceptual thing at a time.
>
> > Therefore, what I have to learn now is all about form binding and
> > recalling form value state if validation fails, so please break that
> > down for me.
>
> > Thanks as always!
>
> > On Jun 3, 10:25 pm, Derek Chen-Becker <dchenbec...@gmail.com> wrote:
> > > Box is the base class. What you want is Full("2").
>
> > > Derek
>
> > > On Wed, Jun 3, 2009 at 8:53 PM, g-man <gregor...@gmail.com> wrote:
>
> > > > Very good!
>
> > > > I did a little homework, rearranged some things, and am getting some
> > > > nice results with the 'manual method'...
>
> > > > Since I am following the PocketChange app now rather than the ToDo
> > > > example, there is no 'todo' val in scope to bind, so the
> > > > todo.priority.toForm method will not work.
>
> > > > I have SHtml.select working with a mapping for my choices, and I can
> > > > use Empty for my default, but how do I get a Box["2"] as my default?
>
> > > > On Jun 3, 7:21 am, Derek Chen-Becker <dchenbec...@gmail.com> wrote:
> > > > > The only issue I would mention is that there's currently an open
> > ticket
> > > > > because MappedDateTime won't save the time portion when you use
> > Derby. I
> > > > > haven't had time to triage this yet.
>
> > > > > Derek
>
> > > > > On Wed, Jun 3, 2009 at 3:01 AM, Timothy Perrett
> > <timo...@getintheloop.eu
> > > > >wrote:
>
> > > > > > Greg,
>
> > > > > > I dont really use toForm; have you explored "doing it manually"? It
> > > > > > seems like that would be able to tell you if there is a problem
> > with
> > > > > > toForm on MappedDateTime.
>
> > > > > > I use mapped date time quite a bit and have no problems at all
> > > > > > persisting the dates :-)
>
> > > > > > Cheers, Tim
>
> > > > > > On Jun 3, 3:09 am, g-man <gregor...@gmail.com> wrote:
> > > > > > > Are there no ideas for my problem?
>
> > > > > > > I have many more questions saved up, but would like to clear each
> > out
> > > > > > > before starting a new one.
>
> > > > > > > Thanks again!
>
> > > > > > > On May 31, 1:57 pm, g-man <gregor...@gmail.com> wrote:
>
> > > > > > > > As I proceed to enhance the ToDo example, I have added a new
> > field
> > > > to
> > > > > > > > the ToDo.scala model:
>
> > > > > > > > object dueOn extends MappedDateTime(this) {
> > > > > > > >     final val dateFormat = DateFormat.getDateInstance
> > > > > > > > (DateFormat.SHORT)
> > > > > > > >     override def asHtml = Text(dateFormat.format(is))}
>
> > > > > > > > Next, I added a binding in the TD.scala snippet within the add
> > > > method
> > > > > > > > of the TD class:
>
> > > > > > > > def doBind(form: NodeSeq) = {
> > > > > > > >       bind("todo", form,  "desc" -> todo.desc.toForm,
> > > > > > > >                           "priority" -> todo.priority.toForm,
> > > > > > > >                           "dueOn" -> todo.dueOn.toForm,
> > > > > > > >                           "submit" -> submit("create new Task",
> > > > > > > > checkAndSave)}
>
> > > > > > > > Then, the todo.html template gets a bind point:
>
> > > > > > > > <lift:TD.add form="post">
> > > > > > > >       ...
> > > > > > > >       <todo:dueOn/>
> > > > > > > >       <todo:submit><button/></todo:submit>
> > > > > > > >     </lift:TD.add>
>
> > > > > > > > When I check the database, the record does save, and all the
> > other
> > > > > > > > fields are OK, but the date itself is <null>.
>
> > > > > > > > Somehow, it seems the text of the input field is not getting
> > > > changed
> > > > > > > > into a Date object for the database to handle, right?
>
> > > > > > > > When I look at the PocketChange app from the book, everything
> > is
> > > > done
> > > > > > > > completely differently from the ToDo example (no use of
> > _toForm,
> > > > for
> > > > > > > > instance).
>
> > > > > > > > I know dates and times are convoluted in Java, so what am I
> > > > missing?
>
> > > > > > > > Thanks!

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to