The code Derek included: // Set the up the RequstVar to initialize a new MyUserClass by default object userVar extends RequestVar[MyUserClass](MyUserClass.create)
By default creates a MyUserClass instance. Maybe you want to init the RequestVar as an Empty Box and then conditionally modify it. object userVar extends RequestVar[Box[MyUserClass]](Empty) Then after you save, you can set the RequestVar to Empty again. Without looking at your code, this is a guess, I could be/probably am wrong. On Jun 25, 12:10 am, g-man <gregor...@gmail.com> wrote: > 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 -~----------~----~----~----~------~----~------~--~---