我正在尝试将SelectItemsConverter与PrimeFaces Picklist一起使用。

XHTML:

<p:pickList id="plUpdateFirma" value="#{bsvttController.dlmFirma}" var="plFirma"
    itemLabel="#{plFirma.schluesselFirma}" itemValue="#{plFirma}"
    converter="FirmaConverter">

    <f:facet name="sourceCaption">
        Vorjahr
    </f:facet>
    <f:facet name="targetCaption">
        #{bsvttController.selSaison}
    </f:facet>

    <p:column>
        #{plFirma.schluesselFirma}
    </p:column>

</p:pickList>


转换器:

@FacesConverter(value = "FirmaConverter")
public class FirmaConverter extends SelectItemsConverter
{

    @Override
    public String getAsString(final FacesContext facesContext, final UIComponent component, final Object object)
    {
        return ((Firma) object).getSchluesselFirma();
    }

}


豆:

@ManagedBean
@ViewScoped
public class BsvttController implements Serializable
{
    private DualListModel<Firma> dlmFirma;
    private List<Firma> dlmFirmaSource;
    private List<Firma> dlmFirmaTarget;
    private Firma firma;

    @PostConstruct
    public void init()
    {
        dlmFirmaSource = FirmaPersistenz.leseFirmaAlle();
        dlmFirmaTarget = new ArrayList<Firma>();
        dlmFirma = new DualListModel<>(dlmFirmaSource, dlmFirmaTarget);
    }

    public DualListModel<Firma> getDlmFirma()
    {
        return dlmFirma;
    }
    public List<Firma> getDlmFirmaSource()
    {
        return dlmFirmaSource;
    }
    public List<Firma> getDlmFirmaTarget()
    {
        return dlmFirmaTarget;
    }

    public void setDlmFirma(DualListModel<Firma> dlmFirma)
    {
        this.dlmFirma = dlmFirma;
    }
    public void setDlmFirmaSource(List<Firma> dlmFirmaSource)
    {
        this.dlmFirmaSource = dlmFirmaSource;
    }
    public void setDlmFirmaTarget(List<Firma> dlmFirmaTarget)
    {
        this.dlmFirmaTarget = dlmFirmaTarget;
    }

}


在调试转换器时,我可以看到getAsString方法运行良好。但是在提交表单后,两个arraylists(dlmFirmaSource和dlmFirmaTarget)都为空。

OmniFaces展示柜说


“ omnifaces.SelectItemsConverter允许您使用f:selectItems的值填充例如带有复杂Java模型对象的下拉列表,并让JSF自动将其转换回去,而无需提供自定义转换器,该转换器可能需要根据昂贵的服务/ DAO操作。”


但是在PickList组件的情况下,不存在任何f:selectItems标记。

SelectItemsConverter甚至支持PickList组件吗?

最佳答案

SelectItemsConverter甚至支持PickList组件吗?


不,不是。

从OmniFaces 1.5开始,可以将omnifaces.ListConverteromnifaces.ListIndexConverter用于所需的目的。另请参见the ListConverter showcase example,它也演示了<p:pickList>上的用法。

关于jsf - OmniFaces:SelectItemsConverter无法与PrimeFaces一起使用:PickList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14832899/

10-10 00:20