@Agr_Arcanjo escreveu:
Olá, tudo bom? Estou fazendo um picklist e precisava deixar uma lista fixa de um lado (source) e na lista target ir adicionando sem retirar do source. Alguém poderia me dar uma luz?
controller
@PostConstruct public void init() { instance = new Playlist(); midiasSource = midiaBean.findAll(); midiasTarget = new ArrayList<Midia>(); midias = new DualListModel<Midia>(midiasSource, midiasTarget); }
converter
@FacesConverter(value = "primeFacesPickListConverter")
public class PrimeFacesPickListConverter implements Converter {@Override public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { Object ret = null; if (arg1 instanceof PickList) { Object dualList = ((PickList) arg1).getValue(); DualListModel dl = (DualListModel) dualList; for (Iterator iterator = dl.getSource().iterator(); iterator.hasNext();) { Object o = iterator.next(); String id = (new StringBuilder()).append(((AbstractBean) o).getId()).toString(); if (arg2.equals(id)) { ret = o; break; } } if (ret == null) { for (Iterator iterator1 = dl.getTarget().iterator(); iterator1.hasNext();) { Object o = iterator1.next(); String id = (new StringBuilder()).append(((AbstractBean) o).getId()).toString(); if (arg2.equals(id)) { ret = o; break; } } } } return ret; } @Override public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { String str = ""; if (arg2 instanceof AbstractBean) str = ((AbstractBean) arg2).getId().toString(); return str; }
xhtml
<p:pickList id="PojoPickList" value="#{playlistController.midias}" var="midia" effect="bounce" itemValue="#{midia}" required="false"
requiredMessage="Pelo menos 1 funcionário deve ser selecionado"
itemLabel="#{midia.nmMidia}" showSourceControls="false" showTargetControls="true" showCheckbox="true" responsive="true"
showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains" converter="primeFacesPickListConverter"><f:facet name="sourceCaption">Midias Disponíveis</f:facet> <f:facet name="targetCaption">Nova Playlist</f:facet> <p:ajax event="transfer" listener="#{playlistController.onTransfer}" >
Da maneira que está, o picklist remove da source e coloca na target, ou seja, não consigo inserir 2x o mesmo item da source, alguma ideia?
Mensagens: 1
Participantes: 1