Ho un convertitore personalizzato per selezionare un Paese in un componente SelectOneMenu:JSF 2.0 Converter non funziona dal vaso-file separato
File: address.jar
@FacesConverter(value="CountryConverter", forClass=Country.class)
public class CountryConverter implements Converter {
private CountryBean countryBean = CountryBean.getCountryService();
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return countryBean.find(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null)
return ((Country)value).getcc_fips();
else
return null;
}
E questo è il xhtml testo:
File: radice Progetto
<h:selectOneMenu id="country" value="#{cc.attrs.addrEntity.country}">
<f:selectItem itemLabel="Please select one..."
noSelectionOption="true" />
<f:selectItems value="#{cc.attrs.addrBean.countries}"
var="model"
itemLabel="#{model.name}"
itemValue="#{model}"
noSelectionValue="“no selection”"/>
<f:converter ConverterId="CountryConverter"/>
</h:selectOneMenu>
ho il convertitore in un file "address.jar" e quando cerco di aprire la pagina di scrivere l'indirizzo, allora risponde dicendo "Espressione Errore: oggetto con nome MyCustomCoverter non trovato.". Anche quando copio il convertitore nel progetto in cui sono presenti i file xhtml, funziona anche bene. Cosa posso fare per risolvere questo?
Perché non funziona da un file jar separato?
Grazie.
Perfetto, funziona molto bene. Grazie!. –
Prego. – BalusC
Un ulteriore ma importante dettaglio è che il JAR deve trovarsi nella ** lib-directory ** di WAR (web-application). Se si ha un EAR con un WAR in esso e il JAR con il convertitore è solo nell'EAR ma non nella lib di WAR, JSF non troverà il convertitore. Vedi anche [questa risposta] (http://stackoverflow.com/questions/2987266/why-doesnt-jsf-2-0-ri-mojarra-scan-my-class-annotations) per un'altra descrizione dettagliata del problema. –