0

JSF2.2, primefaces 4, omnifaces 1.8.11.

In a composite component, how to to declare and use a converter as an attribute which is optional (that is to say it could be not used). For a exemple

interface
<cc:attribute name="converter" required="false" default="" type="javax.faces.convert.Converter" />

...

implementation 1
----------------
<p:inputText value="#{cc.attrs.value}"
            converter="#{cc.attrs.converter}" />
result
------
converter is not executed

implementation 2
----------------
<p:inputText value="#{cc.attrs.value}">
  <f:converter converterId="#{cc.attrs.converter}" />
</p:inputText>
result
------
com.sun.faces.application.ApplicationImpl createConverter
SEVERE: JSF1006: Cannot instantiate converter of type 
...
javax.faces.FacesException: Erreur d’expression : objet nommé «» non détecté
at com.sun.faces.application.ApplicationImpl.createConverter(...)

implementation 3
----------------
<p:inputText value="#{cc.attrs.value}">
  <o:converter converterId="#{cc.attrs.converter}" />
</p:inputText>
result
------
same as f:converter

...

caller
<my:componentC value="#{customController.attribute}" 
    converter="#{customConverter}" />

<my:componentC value="#{customController.attribute}" />
jpl
  • 347
  • 3
  • 11

1 Answers1

2

Finally i create a dummy converter as defined by balusc in http://balusc.omnifaces.org/2006/09/debug-jsf-lifecycle.html

Default converter is defined like this in composite component

<cc:attribute name="converter" required="false" default="dumyConverter"/>

<p:inputText value="#{cc.attrs.value}">
  <f:converter converterId="#{cc.attrs.converter}" />
</p:inputText>

and used,

<my:componentC value="#{customController.attribute}" 
 converter="customConverter" />
or
<my:componentC value="#{customController.attribute}" />
jpl
  • 347
  • 3
  • 11