webtier@glassfish.java.net

Re: [webtier] JSF2 Custom Validators Interface Changed?

From: Lincoln Baxter, III <lincolnbaxter_at_gmail.com>
Date: Sat, 21 Mar 2009 10:41:58 -0400

Here you go.

This is nested within 3 h:dataTables and a lot of plain HTML. Let me
know if you need more specific details. I hope bringing all these up is
helpful and not aggravating! Thanks.

------------------------------------------
<h:inputText id="hours" size="1" value="#{task.hoursRemain}"
valueChangeListener="#{homeTableBean.changeHours}">
        <f:validator validatorId="integerValidator" />
        <f:ajax execute="hours" render="hours TPLmessages" />
</h:inputText>

------------------------------------------
com.ocpsoft.socialpm.exceptions.SiteRuntimeException:
javax.servlet.ServletException: /faces/home/homeTable-story.xhtml @54,53
<f:validator> A validator id was not specified. Typically the validator
id is set in the constructor ValidateHandler(ValidatorConfig)

------------------------------------------
package com.ocpsoft.socialpm.pages.validation;

import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

import com.ocpsoft.socialpm.jsf.FacesSpringContextAware;
import com.ocpsoft.util.ResourceBundleUtil;
import com.ocpsoft.util.StringValidations;

public class IntegerValidator extends FacesSpringContextAware implements
Validator
{
    private final ResourceBundle messages = ResourceBundleUtil
            .loadBundle("com.ocpsoft.socialpm.pages.validation.validationBundle");

    @Override
    public void validate(final FacesContext context, final UIComponent
component, final Object value)
            throws ValidatorException
    {
        String field = value.toString();
        if (!StringValidations.isWholeNumber(field))
        {
            FacesMessage msg = new
FacesMessage(messages.getString("badWholeNumber"));
            throw new ValidatorException(msg);
        }
    }
}

------------------------------------------
public abstract class FacesSpringContextAware
{
    protected WebApplicationContext getSpringContext()
    {
        FacesContext context = FacesContext.getCurrentInstance();
        WebApplicationContext springContext = WebApplicationContextUtils
                .getWebApplicationContext((ServletContext)
context.getExternalContext().getContext());
        return springContext;
    }

    protected Object getBean(final String ref)
    {
        return getSpringContext().getBean(ref);
    }
}

------------------------------------------
Caused by:
javax.faces.webapp.pdl.facelets.tag.TagException: /faces/home/homeTable-story.xhtml @54,53 <f:validator> A validator id was not specified. Typically the validator id is set in the constructor ValidateHandler(ValidatorConfig)
        at
com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.createValidator(ValidatorTagHandlerDelegateImpl.java:165)
        at
com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.applyAttachedObject(ValidatorTagHandlerDelegateImpl.java:132)
        at
com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.apply(ValidatorTagHandlerDelegateImpl.java:87)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:170)
        at
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:86)
        at
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:80)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:285)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:331)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:310)
        at
com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:181)
        at
com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:107)
        at
com.sun.faces.facelets.tag.jsf.core.FacetHandler.apply(FacetHandler.java:101)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(CompositeComponentTagHandler.java:185)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:170)
        at
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:86)
        at
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:80)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:285)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:331)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:310)
        at
com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:181)
        at
com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:107)
        at
com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:101)
        at
com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:182)
        at com.sun.faces.facelets.impl.DefaultFaceletContext
$TemplateManager.apply(DefaultFaceletContext.java:376)
        at
com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:347)
        at
com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:106)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:114)
        at
com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:189)
        at
javax.faces.webapp.pdl.facelets.tag.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:108)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:86)
        at
javax.faces.webapp.pdl.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:93)
        at
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:80)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:285)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:331)
        at
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:310)
        at
com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:181)
        at
com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:159)
        at
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:86)
        at
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:80)
        at
com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:132)
        at
com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:391)
        at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:102)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311)
        ... 105 more

On Fri, 2009-03-20 at 16:17 -0700, Ryan Lubke wrote:

> On 3/20/09 4:03 PM, Lincoln Baxter, III wrote:
>
> > Did this get picked up in the nightly? Still not working for me.
> >
> > On Thu, 2009-03-19 at 16:04 -0700, Ryan Lubke wrote:
> >
> > > Fixed. New bits pushed to java.net.
>
> I saw this issue yesterday adding attached composite component
> Validator tests.
> These tests are passing, so perhaps your usage is different.
>
> Open an issue with your use case so we can investigate further.