Thanks a lot Josh
I'm going to try it now

Josh Canfield a écrit :
Hey Michael,

I didn't get to it last night, but here you go, a very simple example:

****** Start.tml ****
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
  <head>
    <title>Form Test</title>
  </head>
  <body>
    MyObject:<br/>
    Name: ${myObject.name}<br/>
    Number: ${myObject.number}<br/>
    <t:form t:id="myForm">
      <t:errors/>
      <t:label t:for="name"/> <input t:type="textfield" t:id="name" t:value=
"myObject.name"/><br/>
      <t:label t:for="number"/> <input t:type="textfield" t:id="number"
t:value="myObject.number"/><br/>
      <input type="submit"/>
    </t:form>
  </body>
</html>

**** Start.java ****
*package* joshcan.test.myapp.pages;
**
*import* joshcan.test.myapp.model.TestObject;
*import* org.apache.tapestry.annotations.Persist;

/**
 * Start page of application myapp.
 */
*public* *class* Start
{
  @Persist // Store this object in the session...
*  private* TestObject _myObject;
*  *
*  public* *void* setupRender() {
*    if* ( _myObject == *null* ) { // make sure we have an object to work
on.
      _myObject = *new* TestObject();
    }
  }

*  public* TestObject getMyObject() {
*    return* _myObject;
  }

*  public* *void* setMyObject(TestObject myObject) {
    _myObject = myObject;
  }
}
**** TestObject.java ****
*

package* joshcan.test.myapp.model;

*public* *class* TestObject {

*  private* String name;
*  private* Long number;

*  public* String getName() {
*    return* name;
  }

*  public* *void* setName(String name) {
*    this*.name = name;
  }

*  public* Long getNumber() {
    *return* number;
  }

*  public* *void* setNumber(Long number) {
*    this*.number = number;
  }

}
Josh


On Nov 15, 2007 1:35 AM, Michael Courcy <[EMAIL PROTECTED]> wrote:

The title property of the video object is updated, I don't have a title
property on my page class.

I can't compile anything right now, but I'll try to put together a small
example tonight, if someone else hasn't posted something by then.

Josh
Josh It would be really really nice  !!!
If you do so I would make it a small wiki tutorial


Josh Canfield a écrit :
 > Hi Michael,

Thanks Josh, but do you have also a title property with getter and
setter in your page class ?


No, I only have the video getter/setter



And if yes (as I guess) whish value is updated when you submit the form
: MyPage.title or MyPage.video.title  ?

The title property of the video object is updated, I don't have a title
property on my page class.

I can't compile anything right now, but I'll try to put together a small
example tonight, if someone else hasn't posted something by then.

Josh

On Nov 14, 2007 11:01 AM, Michael Courcy <[EMAIL PROTECTED]>
wrote:
Thanks Josh, but do you have also a title property with getter and
setter in your page class ?

And if yes (as I guess) whish value is updated when you submit the form
: MyPage.title or MyPage.video.title  ?

Josh Canfield a écrit :
 >> I want to populate from the form directly to the bean. But this
require

to use either the beanEditForm or a custom component.



You can get this to work. I use the textfield component for editing my

bean

objects. This is from a working emplate:
<input t:id="*title*" t:type="*textfield*" t:size="*40*" t:value="*
video.title*" t:validate="*required*" type="*text*" />

My page class has a getVideo method which returns an object that has a
getTitle method.

Good luck,
Josh

On Nov 14, 2007 9:05 AM, Michael Courcy <[EMAIL PROTECTED]>

wrote:

You're right

here it is,  I remove the "offending input"

and use this instead

${user}-- ${user.name}

And I get

[EMAIL PROTECTED] -- A name

Obviously user is not null.

I think the problem does not come from tapestry but from me.
I want to populate from the form directly to the bean. But this
require
to use either the beanEditForm or a custom component.

I 'm just influenced by other framework like struts2 for instance :

If you have something like that in your form

<input name="user.name" value="bla" />

When the form is submitted struts2 tries to find if the controller
features a user property, and then if user features a name property
If the answer is yes to both it calls controller.getUser

().setName("bla");


Ezra Epstein a écrit :
 > I always pause when hearing "100% sure."  An easy check/test is to
remove the offending <input> and stick in a simple ${user} and see if

indeed

you get the toString() value for your user object.


Michael Courcy <[EMAIL PROTECTED]> wrote: I'm 100% sure, user

is

not null


I have a getter and a setter for both : name and user

Thanks
Thiago H de Paula Figueiredo a écrit :



On Wed, 14 Nov 2007 12:47:06 -0200, Michael Courcy
 wrote:




 [input]

I have to provide the setter and the getter for name and I still
get
an error when I submit.



What error? Make sure your user field is not null when the form is
submited. Also make sure you have public getters and setters,
because
otherwise Tapestry cannot access them.




--
Michael Courcy
http://courcy.blogspot.com




--
Michael Courcy
http://courcy.blogspot.com




--
Michael Courcy
http://courcy.blogspot.com






--
Michael Courcy
http://courcy.blogspot.com

Reply via email to