Hei people,
é a primeira vez que me aventuro na utilização desse <rich:pickList>. Estou utilizando-o para praticar o conhecimento que adquiri nos estudos de Java (recentemente).
A questão é a seguinte:
Criei no meu banco uma tabela de Lojas (populada), e uma tabela de Compras. Na hora de cadastrar Compras eu tenho que selecionar as lojas em que fiz as compras.
O meu jsf está assim:
<rich:pickList copyAllControlLabel=" Copiar tudo" copyControlLabel="Copiar" removeControlLabel="Remover" removeAllControlLabel="Remover tudo" value="#{listaLojasSelecionadas}">
<f:selectItems value="#{listaComboLojas}"/>
</rich:pickList>
Na action fiz o seguinte:
@In(required = false)
@Out(required = false)
List<SelectItem> listaComboLojas = new ArrayList<SelectItem>();
@In(required = false)
@Out(required = false)
List<String> listaLojasSelecionadas = new ArrayList<String>();
public List<Loja> listaLoja(){
List<Loja> lista = null;
lista = entityManager.createNamedQuery("listaLojas").getResultList();
//--------------------------------------------------------------------------------------------------------------------//
for(Loja loja : lista){
listaComboLojas.add(new SelectItem(loja.getIdLoja().toString(),loja.getNomeLoja()));
}
//--------------------------------------------------------------------------------------------------------------------//
return lista;
}
Entity Loja
@Entity
@Table(name = "Loja", schema = "Estudo")
@NamedQueries({ @NamedQuery(name = "listaLojas", query = "SELECT OBJECT(loja) FROM Loja loja") })
public class Loja implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name = "idLoja", unique = true, nullable = false)
private Integer idLoja;
@Column(name = "nomeLoja")
private String nomeLoja;
@ManyToMany
@JoinTable(schema = "cvp", name = "Compra_has_Loja", joinColumns = { @JoinColumn(name = "idLoja") }, inverseJoinColumns = { @JoinColumn(name = "idCompra") })
private List<Compra> compras;
...
}
Ele está gerando o seguinte erro:
Value of tag <selectItems> attribute is incorrect.
Eu num tenho que passar uma lista de SelectItem?