我的转换器没有激活/工作

时间:2013-04-05 11:49:59

标签: jsp jsf converter

我需要<h:selectOneMenu>的转换器。我创建了它,但我的对象仍然显示为com.ddd.bo.Firm@9f36e691

<h:selectOneMenu value="#{configBean.user.firm}" convert="firmConverter" required="true" label="#{bundle.config_form_add_firm}" > 
    <f:selectItems value="#{configBean.firmsLazyList}" />                  
</h:selectOneMenu>

faces-config-general.xml中,我放置了:

<converter>
    <converter-for-class>com.ddd.bo.Firm</converter-for-class>
    <converter-class>com.ddd.bo.converter.FirmConverter</converter-class>
</converter>

FirmConverter.java

@FacesConverter(forClass=Firm.class)
public class FirmConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String newValue) throws ConverterException {
        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        Firm pFirm = (Firm) value;
        return pFirm.getName();
    }
}

我还尝试了@FacesConverter(forClass=Firm.class)

,而不是@FacesConverter("firmConverter")

我没有收到任何错误。

如何让转换器正常工作,以便显示Firm#getName()而不是Firm#toString()

1 个答案:

答案 0 :(得分:0)

感谢您帮助和抱歉标记:/

我的转换器很好,问题来自

<h:selectOneMenu value="#{configBean.user.firm}" convert="firmConverter" required="true" label="#{bundle.config_form_add_firm}" > 
<f:selectItems value="#{configBean.firmsLazyList}" />                  

我们需要使用List of Firm而不是LazyList。

希望它对其他人有所帮助。

感谢所有人。