Thanks - that appears to work. However, now I've discovered that
validation doesn't work at all. In Tapestry 3.0.3, I was using a
custom ValidationDelegate that I found in Tapestry in Action.
Unfortunately, it doesn't seem to work in Tapestry 4. I'm setting it
in my page-specification using:
<bean name="delegate" class="org.appfuse.webapp.action.Validator"/>
Is there a different way to set this in 4.0?
The other problem I have with this Validator in 4.0 is there's now a
nested <label> inside the <label> I'm writing. Is it possible to set
the "required" class on the <label> that Tapestry writes?
public class Validator extends ValidationDelegate {
private static final long serialVersionUID = 6658594142293597652L;
public void writeLabelPrefix(IFormComponent component,
IMarkupWriter writer, IRequestCycle cycle) {
writer.begin("label");
if (isInError(component)) {
writer.attribute("class", "error");
} else {
writer.attribute("class", "required");
}
writer.print(" * ");
}
public void writeLabelSuffix(IFormComponent component,
IMarkupWriter writer, IRequestCycle cycle) {
Locale locale = cycle.getEngine().getLocale();
String marker = (locale.equals(Locale.FRENCH)) ? " :" : ":";
writer.print(marker);
writer.end();
}
public void writeAttributes(IMarkupWriter writer, IRequestCycle cycle,
IFormComponent component, IValidator
validator) {
if (isInError()) {
writer.attribute("class", "error");
}
}
public void writeSuffix(IMarkupWriter writer, IRequestCycle cycle,
IFormComponent component, IValidator validator) {
if (isInError(component)) {
writer.printRaw(" ");
writer.begin("img");
String ctxPath = cycle.getInfrastructure().getContextPath();
writer.attribute("src", ctxPath + "/images/iconWarning.gif");
writer.attribute("class", "validationWarning");
writer.attribute("alt",
cycle.getPage().getMessages().getMessage("icon.warning"));
writer.end();
writer.printRaw(" ");
IFieldTracking tracking = getComponentTracking();
IRender render = tracking.getErrorRenderer();
String error = "";
if (render instanceof RenderString) {
error = ((RenderString) render).getString();
}
writer.begin("span");
writer.attribute("class", "fieldError");
writer.printRaw(error);
writer.end();
}
}
}
Thanks,
Matt
On 3/30/06, Mike Snare <[EMAIL PROTECTED]> wrote:
> try replacing
>
> value="\\d{5}(-\\d{4})?"
>
> with
>
> value="literal:\\d{5}(-\\d{4})?"
>
> See if that works.
>
> -Mike
>
> On 3/30/06, Matt Raible <[EMAIL PROTECTED]> wrote:
> > This worked in 3.0.3:
> >
> > <bean name="zipValidator"
> > class="org.apache.tapestry.valid.PatternValidator">
> > <set name="patternString" value="\\d{5}(-\\d{4})?"/>
> > <set name="required" value="true"/>
> > <set name="patternNotMatchedMessage" value="message:errors.zip"/>
> > <set name="clientScriptingEnabled" value="true"/>
> > </bean>
> >
> > But this doesn't work in 4.0:
> >
> > Unable to read OGNL expression '<parsed OGNL expression>' of
> > [EMAIL PROTECTED]: Error initializing property
> > patternString of bean 'zipValidator' (of component signup): Unable to
> > parse OGNL expression '\\d{5}(-\\d{4})?': Malformed OGNL expression:
> > \\d{5}(-\\d{4})?
> >
> > Any idea how to fix this? How did the regular expression syntax change?
> >
> > Thanks,
> >
> > Matt
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]