【问题标题】:My converter does not activate/work我的转换器无法激活/工作
【发布时间】:2013-04-05 11:49:58
【问题描述】:

我需要<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("firmConverter"),而不是@FacesConverter(forClass=Firm.class)

我没有收到任何错误。

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

【问题讨论】:

  • forClass 应该可以工作。当您使用 convert 而不是 converter 时,该名称将不起作用。 faces-config-general.xml 到底是什么?它是否被引用为javax.faces.CONIG_FILES?此外,您真的在使用 JSP 吗?自 JSF2 以来已弃用此功能。在未来的 JSF 问题中,请使用 [jsf] 标签而不是 [java-ee]

标签: jsp jsf converter


【解决方案1】:

感谢您的帮助,对标签感到抱歉:/

我的转换器很好,问题出在

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

我们需要使用公司列表而不是惰性列表。

希望对其他人有所帮助。

谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多