And these interfaces also support @Inject and also can be injected into other beans, which are originally planned in JSF 2.2, but delayed to be implemented in JSF 2.3.
Let's create a simple sample to taste it. TagsConverter is used to convert tag string to a tag list in backing bean.
managed = true indicates the converter is a CDI managed converter.
To demonstrate @Inject supports in Converter, I extracted the conversion handling process into a CDI bean ConverterUtils, and inject it in TagsConverter.
@ApplicationScopedpublicclassConverterUtils { @InjectLogger LOG;publicStringlistToString(List<String> value) {LOG.log(Level.INFO,"listToString:{0}", value);return value !=null?join(",", value):""; }publicList<String> stringToList(String value) {LOG.log(Level.INFO,"stringToList:{0}", value);return value !=null?Arrays.asList(value.split(",")) : Collections.<String>emptyList(); }}
Now you can apply this converter on an input field in a facelets template.