我有一个对话框,用于在我的arraylist和数据库中添加一个对象,但是我的actionListener只是不调用我的函数!我尝试放置一些打印件,并且在我的功能中没有人被调用,但是看起来很好。任何人都可以找到问题吗?
我的对话框:
<p:dialog header="Novo Aluno" widgetVar="novoDialog" modal="true"
resizable="false">
<h:form>
<p:outputPanel>
<p:panelGrid columns="2">
<h:outputText value="Nome: " />
<p:inputText value="#{alunosView.alunoNovo.nome}" />
</p:panelGrid>
<p:panelGrid columns="1">
<p:selectOneMenu value="#{alunosView.alunoNovo.turma}">
<f:selectItems value="#{alunosView.turmas}" var="turma"
itemLabel="#{turma.curso} - #{turma.ano}º ano" />
</p:selectOneMenu>
</p:panelGrid>
<p:panelGrid columns="2">
<p:commandButton value="Adicionar" update=":form:alunos"
actionListener="#{alunosView.adicionarAluno}"
oncomplete="PF('novoDialog').hide();" />
<p:commandButton value="Cancelar"
oncomplete="PF('novoDialog').hide();" />
</p:panelGrid>
</p:outputPanel>
</h:form>
</p:dialog>
我的豆子:
@ManagedBean
@ViewScoped
public class AlunosView {
ArrayList<Aluno> alunos;
ArrayList<Turma> turmas;
Aluno alunoSelecionado;
Aluno alunoNovo;
ClassDAO<Aluno> alunoDao;
ClassDAO<Turma> turmaDao;
@PostConstruct
public void init(){
alunoDao = new ClassDAO<>(Aluno.class);
turmaDao = new ClassDAO<>(Turma.class);
alunos = alunoDao.getAll();
turmas = turmaDao.getAll();
alunoSelecionado = new Aluno();
alunoNovo = new Aluno();
}
public void adicionarAluno(){
System.out.println("asdhaisdisdhisdaisdahiasdhsad dkgsad ksa gdlasds");
alunoDao.save(alunoNovo);
alunos = alunoDao.getAll();
}
public void deletarAluno(){
alunoDao.remove(alunoSelecionado.getId());
alunos = alunoDao.getAll();
}
public void salvarAluno(){
alunoDao.save(alunoSelecionado);
alunos = alunoDao.getAll();
}
public ArrayList<Aluno> getAlunos() {
return alunos;
}
public void setAlunos(ArrayList<Aluno> alunos) {
this.alunos = alunos;
}
public ArrayList<Turma> getTurmas() {
return turmas;
}
public void setTurmas(ArrayList<Turma> turmas) {
this.turmas = turmas;
}
public Aluno getAlunoSelecionado() {
return alunoSelecionado;
}
public void setAlunoSelecionado(Aluno alunoSelecionado) {
this.alunoSelecionado = alunoSelecionado;
}
public Aluno getAlunoNovo() {
return alunoNovo;
}
public void setAlunoNovo(Aluno alunoNovo) {
this.alunoNovo = alunoNovo;
}
}
最奇怪的是,我有其他页面几乎等于这个页面和那个bean工作正常! post构造方法中的代码也可以正常工作。有人帮我吗?