I haven't tested this behavior, but I would consider it a bug for two
reasons:
1) write = false is specified for @Property. So tapestry really
shouldn't be creating any setters for this property during the class
transformation.
2) From Osamuo's text, it sounds like that if you don't have
@Validate, the custom setter is called just fine. It's only when you
add @Validate that the set fails. Is that the case?
If so, it's definitely a bug. It either needs to fail in both cases,
or succeed in both cases.
Robert
On Feb 23, 2009, at 2/236:05 AM , Ulrich Stärk wrote:
No, it's not. This is expected behaviour.
Uli
inyokoyoko-deve...@yahoo.co.jp schrieb:
Hi,
I have already known a solution.
It seems to be a bug.
Don't you think so?
osamuo
Using the @Property annotation will make Tapestry add getters and
setters for this property during class transformation that will
override your supplied ones. Leave out the @Property annotation and
specify your own getters and setters and you should be fine.
Uli
inyokoyoko-deve...@yahoo.co.jp schrieb:
Hi,
You can encounter the same problem with the following code in a
freshly set up project. Please try. Click the submit button.
Test.java
---------------------------------
package org.example.myapp.pages;
import java.util.Date;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.beaneditor.Validate;
public class Test{
@Property( write = false )
@Validate( "required") // <== when this line is added,
setName() is not called
private String name;
public void setName( String name ){
this.name = name;
}
}
---------------------------------
Test.tml
---------------------------------
[input] [input]
---------------------------------
osamuo
I'm using the same version as you do - 5.0.18
Have you tried the same code in a freshly set up project? The
problem seems
to be somewhere else in your project.
On Sun, Feb 22, 2009 at 5:55 PM, wrote:
Hi,
What version are you using?
With the following code setName() was called.
@Property( write = false )
private String name;
public void setName( String name ){ <== called
...
this.name = ....
}
With the following code setName() was not called.
@Property( write = false )
@Validate( "Required,MinLength=5,MaxLength=16" )
private String name;
public void setName( String name ){ <== not called
...
this.name = ....
}
I don't know why the setter is not called if I add @Validate.
osamuo
Markus Lux wrote: With your example code I'm
getting an ComponentEventException saying that
"name" is read-only.
Try adding a public-modifier to your setter. That worked for me.
On Sun, Feb 22, 2009 at 3:49 PM, wrote:
Hi,
When I set '@Validate' for a TextField, the setter was never
called.
It seems to be a bug.
@Property( write = false )
@Validate( "Required,MinLength=5,MaxLength=16" )
private String name;
void setName( String name ){ <=== not called
...
this.name = ....
}
Thanks,
osamuo
---------------------------------
Power up the Internet with Yahoo! Toolbar.
---------------------------------
Power up the Internet with Yahoo! Toolbar.
---------------------------------
Power up the Internet with Yahoo! Toolbar.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org
---------------------------------
Power up the Internet with Yahoo! Toolbar.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org