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("&nbsp;");
            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("&nbsp;");

            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]

Reply via email to