I've tried it
It works, got to understand my errors now.
Thanks a lot.
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