Olá tenho um SelectOneMenu que contem generos músicas, como Pop, Rock etc… E tenho um SelectManyMenu que contém uma lista de cifras músicas de vários generos.
Estou tentando fazer com que ao selecionar o genero do SelectOneMenu, meu SelectManyMenu aparece apenas as cifras que foi escolhida o genero.
Assim está meu bean:
@ManagedBean
@ViewScoped
public class PlaylistBean{
private List<Cifra> cifras;
private List<Genero> generos;
private Cifra cifra;
public Cifra getCifra() {
return cifra;
}
public void setCifra(Cifra cifra) {
this.cifra = cifra;
}
public List<Genero> getGeneros() {
return generos;
}
public void setGeneros(List<Genero> generos) {
this.generos = generos;
}
public List<Cifra> getCifras() {
return cifras;
}
public void setCifras(List<Cifra> cifras) {
this.cifras = cifras;
}
@PostConstruct
public void instancia() {
try {
GeneroDAO generoDAO = new GeneroDAO();
CifraDAO cifraDAO = new CifraDAO();
setCifras(cifraDAO.listar());
setGeneros(generoDAO.listar());
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao listar cifra");
erro.printStackTrace();
}
}
}
Minha View:
<h:panelGrid>
<f:facet name="header">
<p:selectOneMenu style="float:left;" filter="true" id="selectcifra"
value="#{menuBean.cifra.genero}"
converter="omnifaces.SelectItemsConverter">
<f:selectItem noSelectionOption="true"
itemLabel="Estilo da música" onchange="PF('TabelaCifra').filter()" />
<f:selectItems value="#{menuBean.generos}" var="genero"
itemValue="#{genero}" itemLabel="#{genero.nomeGenero}" />
<p:ajax event="change" />
</p:selectOneMenu>
<p:commandButton icon="fa fa-fw fa-forward" style="width:150px;" />
</f:facet>
<p:selectManyMenu widgetVar="TabeaCifra" id="cifras" value="#{selectManMenuBean.cifras}"
converter="omnifaces.SelectItemsConverter" var="cifra"
filter="true" filterMatchMode="contains" showCheckbox="true"
style="width:325px;">
<f:selectItems value="#{playlistBean.cifras}" var="cifras"
itemLabel="#{cifras.nomeCifra}" itemValue="#{cifras}" />
<p:column>
<h:outputText value="#{cifra.nomeCifra}" />
</p:column>
<p:column>
<h:outputText value="#{cifra.genero.nomeGenero}" />
</p:column>
</p:selectManyMenu>
</h:panelGrid>