0
我想通過使用ajax更新selectOneMenu基於從另一個selectOneMenu所做的更改。selectOneMenu不會更新ajax
我XHTML:
<p:outputLabel value="Tipo:" for="tipoCombo" />
<p:selectOneMenu id="tipoCombo" value="#{equipamentoBean.tipo}" >
<f:selectItem itemLabel="Selecione" itemValue=""></f:selectItem>
<f:selectItems value="#{equipamentoBean.tipos}"></f:selectItems>
<p:ajax event="change" listener="#{equipamentoBean.listaSoftwares}" update="mainForm:softwareCombo" />
</p:selectOneMenu>
<p:outputLabel value="Software:" for="softwareCombo" />
<p:selectOneMenu id="softwareCombo" value="#{equipamentoBean.software}">
<f:selectItem itemLabel="Selecione" itemValue=""></f:selectItem>
<f:selectItems value="#{equipamentoBean.softwares}"></f:selectItems>
</p:selectOneMenu>
當我改變我的tipoCombo阿賈克斯應該叫我equipamentoBean方法listaSoftwares然後我softwareCombo將填充
listaSoftware
public void listaSoftwares(){
System.out.println("Carregando softwares");
this.softwares = new EquipamentoSoftwareDao().listaSoftwarePorTipo(1);
System.out.println("Carregado");
}
我添加了System.out.println(「Carregando軟件「);看是否正被調用的方法,但沒有任何反應
我正在關注的主要展示http://www.primefaces.org/showcase/ui/ajax/dropdown.xhtml
我嘗試不同的方法,但是這一次似乎是正確的。
@Bean
@ManagedBean
@SessionScoped
public class EquipamentoBean {
private List<Equipamento> equipamentos;
private Equipamento equipamento;
private List<Equipamento> equipamentosFiltrados;
private List<EquipamentoTipo> tipos;
private EquipamentoTipo tipo;
private List<Regiao> regioes;
private Regiao regiao;
private List<EquipamentoSoftware> softwares;
private EquipamentoSoftware software;
public EquipamentoBean(){
}
@PostConstruct
public void init(){
System.out.println("init");
tipo = new EquipamentoTipo();
//Pega os equipamentos no banco
this.equipamentos = new EquipamentoDao().listaEquipamentos();
this.tipos = new EquipamentoTipoDao().listaTipos();
this.regioes = new RegiaoDao().listaRegioes();
System.out.println("init end");
}
public void salva(ActionEvent actionEvent){
EquipamentoDao dao = new EquipamentoDao();
dao.salva(equipamento);
addMessage("Equipamento Salvo!");
}
public void addMessage(String summary){
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
public void listaSoftwares(ChangeEvent eg){
System.out.println("Carregando softwares");
this.softwares = new EquipamentoSoftwareDao().listaSoftwarePorTipo(1);
System.out.println("Carregado");
}
public List<EquipamentoTipo> listarTipos(){
this.tipos = new EquipamentoTipoDao().listaTipos();
return tipos;
}
//GETTERS AND SETTERS
}