Я пытаюсь использовать SelectItemsConverter с PrimeFaces Picklist.OmniFaces: 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();
}
}
Bean:
@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 витрина говорит, что
«The omnifaces.SelectItemsConverter позволяет заполнять, например, в раскрывающемся меню со сложными Java объектов модели в качестве значения F: selectItems и имеют JSF конвертировать те автоматически обратно без необходимости предоставить настраиваемый конвертер, который может потребоваться для выполнения задания на основе, возможно, дорогостоящих операций обслуживания/DAO ».
Но в случае компонента PickList не существует f: selectItems tag.
Может ли SelectItemsConverter поддерживать компонент PickList?
На всякий случай, если вы ищете подтверждение, да, maple_shaft прав. '' не использует 'UISelectItem (s)', так что это конец истории. Если вам действительно нужно, подумайте о настраиваемом конвертере, который вводит компонент, поддерживающий модель. –
BalusC