Hi

I'm using MyFaces (2.1.10) with ExtVal (2.0.6). As RenderKit's I use Primefaces 
and Primefaces Mobile. This does not work because the class

org.apache.myfaces.extensions.validator.core.renderkit.DefaultRenderKitWrapperFactory

is not able to handle more than one RenderKit. This is because the method 
createWrapper caches the first RenderKit it wrappes. After that it returns the 
cached RenderKit even if the RenderKit to wrap is another one than the cached 
one.

I have fixed this in my project by providing my own RenderKitWrapperFactory:

class IvyExtValRenderKitWrapperFactory extends AbstractRenderKitWrapperFactory
{
  private HashMap<RenderKit, ExtValRenderKit> wrappers = new HashMap<RenderKit, 
ExtValRenderKit>();

  @Override
  protected synchronized RenderKit createWrapper(RenderKit renderKit)
  {
    ExtValRenderKit wrapper = wrappers.get(renderKit);
    if (wrapper == null)
    {
      wrapper = new ExtValRenderKit(renderKit);
      wrappers.put(renderKit, wrapper);
    }
    return wrapper;
  }

}

Do I make something wrong or is this a bug? Should I report an issue?

Regards

Reto Weiss
Product Owner / Developer Xpert.ivy

ivyTeam AG
Alpenstrasse 9
6300 Zug


Reply via email to