webtier@glassfish.java.net

Re: [webtier] JSF2 Custom Validators Interface Changed?

From: Ryan Lubke <Ryan.Lubke_at_Sun.COM>
Date: Mon, 23 Mar 2009 12:49:11 -0700

On 3/21/09 7:41 AM, Lincoln Baxter, III wrote:
> 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.
We've checked in a fix for this issue and uploaded new nightly bits to
java.net.
>
> ------------------------------------------
> <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.