Sorry, I'm lost ... which part of that treatise are you saying
"validator:" allows? Not specifying a translator?
Any reactions to the rest of it?
P
On Dec 26, 2005, at 3:43 PM, Jesse Kuhnert wrote:
You can still use the validator: binding prefix, which allows what
you want.
We plan on fixing this at a minimum in 4.1, but it'll probably make
its way
back out to 4.0 as well.
On 12/26/05, Paul Cantrell <[EMAIL PROTECTED]> wrote:
You're right -- adding this binding does the trick:
"translator=translator:number"
It seems wrong that I need to do this, however, since the translation
already happens automatically (and works fine) when it comes time to
actually drop the value into the bookQuantity property (which is
declared as an Integer).
Something smells bad here -- and it's not just the cruft in the docs.
(Although fixing the docs before the 4.0 release would be a good
idea....) At this point, I have a massive declaration for what should
be a very simple thing, a required positive integer field:
@Component(
type="TextField", id="bookQuantity",
bindings = {
"value=ognl:bookQuantity",
"translator=translator:number",
"validators=validators:required,min=1" } )
public abstract TextField getBookQuantityComponent();
public abstract Integer getBookQuantity();
public abstract void setBookQuantity(Integer value);
Look at how little useful information that mess actually conveys;
look at how many things get repeated:
"TextField" : 2x
The string "[B|b]ookQuantity": 5x
That fact that the property is a number : 4x (translator,
min,
getter, setter)
Suppose that:
(1) there were some default naming conventions for properties named
xxxxComponent being paired with property xxxx,
(2) the @Component annotation were capable of inferring the type from
the return type of the getter method (why not?), and
(3) either the min validator parsed strings for itself, or validators
had access to the implicit translation that occurs when populating a
non-String property.
I would then be able to reduce the annotation above to:
@Component( bindings =
{ "validators=validators:required,min=1" } )
public abstract TextField getBookQuantityComponent();
public abstract Integer getBookQuantity();
public abstract void setBookQuantity(Integer value);
If any of ideas 1-3 seem reasonable to others, I would be willing to
work on implementing them....
Cheers,
Paul
On Dec 26, 2005, at 2:56 PM, Jesse Kuhnert wrote:
No you're right. This is something I recently discovered as
well....Unfortunately you'll have to also give it a "translator"
binding. I
think int(integer?) is one.
On 12/26/05, Paul Cantrell <[EMAIL PROTECTED]> wrote:
I have a text field in a form, and I want to make sure that the
user
enters a positive integer into it. I'm utterly befuddled about
how to
accomplish this in a tidy way using Tapestry's new validation
system.
Here's my component:
@Component(
type="TextField", id="bookQuantity",
bindings = { "value=ognl:bookQuantity",
"validators=validators:min=1" } )
public abstract TextField getBookQuantityComponent();
public abstract Integer getBookQuantity();
public abstract void setBookQuantity(Integer value);
If I type a value into this field, I get a ClassCastException at
Min.java:53:
Number value = (Number) object;
The object that's being passed in is a string. Clearly the "min"
validator expects a number to be passed in, but I don't see
where my
string is going to be converted to a number.
The documentation is kind of broken on this front. The TextField
docs
tell me:
"A TextField may be decorated by the Form's validation
delegate,
but
does not have a validator, so is limited in editting
properties
types
beyond string. In most cases, the ValidField component is
preferred."
And the ValidField docs tell me (under a big red "WARNING"
heading):
"This component has been deprecated; Tapestry 4.0 adds even
better
support for validation to TextField, TextArea and most other
for
element component."
Lovely. The example on the page about validators shows an email
address, which is of course a string.
I'm sure that this made sense to someone at some point, but that
person is not me. Surely I'm missing something obvious...?
Cheers,
Paul
_________________________________________________________________
Piano music podcast: http://inthehands.com
Other interesting stuff: http://innig.net
-------------------------------------------------------------------
--
To unsubscribe, e-mail: tapestry-user-
[EMAIL PROTECTED]
For additional commands, e-mail: tapestry-user-
[EMAIL PROTECTED]
_________________________________________________________________
Piano music podcast: http://inthehands.com
Other interesting stuff: http://innig.net
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: tapestry-user-
[EMAIL PROTECTED]
_________________________________________________________________
Piano music podcast: http://inthehands.com
Other interesting stuff: http://innig.net
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]