Bom dia ,
estou com o seguiten problema,
tenho uma tela que tem 4 selectOneMenu, e um botao que adiciona para uma lista as opções selecionadas,
na tabela ah uma opção de remover,
só que ao apertar para remover um elemento da lista, ele pede que os SelectOneMenu estejam preenchidos,
segue abaixo o html.
[code] <h:form id=“consulta”>
<p:growl id=“dados” autoUpdate=“true” />
<p:fieldset legend=“Agenda médica” id=“agenda”>
<h:outputLabel value=“Médico” />
<p:selectOneMenu converter=“profissionalConversor”
id=“profissional” required=“true”
requiredMessage=“O médico é obrigatório”
style=“height: 23px; width: 335px;”
value="#{consultaMedicaBean.profissional}">
<f:selectItem itemLabel=“SELECIONE” itemValue=""
noSelectionOption=“true” />
<f:selectItems value="#{consultaMedicaBean.profissionais}" var=“p”
itemValue="#{p}" itemLabel="#{p.pessoa.nome}" />
<p:ajax event=“change”
listener="#{consultaMedicaBean.getAgendasMedicas}"
update=“agendamedica” />
</p:selectOneMenu>
<div class="campo-grupo">
<h:outputLabel value="Agenda" />
<p:selectOneMenu converter="agendaConversor" id="agendamedica"
required="true" requiredMessage="A agenda é obrigatório"
style="height: 23px; width: 335px;"
value="#{consultaMedicaBean.agendaMedica}">
<f:selectItem itemLabel="SELECIONE" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{consultaMedicaBean.agendasMedicas}"
var="am" itemValue="#{am}" itemLabel="#{am.nome}" />
<p:ajax update="data" event="change"
listener="#{consultaMedicaBean.getDatas}" />
</p:selectOneMenu>
</div>
</p:fieldset>
<p:fieldset legend="Consulta" id="consulta">
<div class="campo-grupo">
<h:outputLabel value="Data" />
<p:selectOneMenu id="data" required="true"
requiredMessage="A data é obrigatória"
style="height: 23px; width: 335px;"
value="#{consultaMedicaBean.dataSelecionada}">
<f:selectItem itemLabel="SELECIONE" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{consultaMedicaBean.datas}" var="d"
itemValue="#{d}" itemLabel="#{d}" />
<p:ajax update="horario" event="change" />
</p:selectOneMenu>
</div>
<div class="campo-grupo">
<h:outputLabel value="Horário" />
<p:selectOneMenu id="horario" required="true"
requiredMessage="O horário é obrigatório"
style="height: 23px; width: 335px;"
value="#{consultaMedicaBean.horaSelecionada}">
<f:selectItem itemLabel="SELECIONE" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{consultaMedicaBean.horas}" var="h"
itemValue="#{h}" itemLabel="#{h}" />
</p:selectOneMenu>
</div>
<p:commandButton value="Adicionar" update="tabela" ajax="false"
action="#{consultaMedicaBean.salvar}">
<p:collector value="#{consultaMedicaBean.consulta}"
addTo="#{consultaMedicaBean.consultas}" />
</p:commandButton>
</p:fieldset>
<div style="clear: both;"></div>
<p:outputPanel id="consultas">
<p:dataTable id="tabela" value="#{consultaMedicaBean.consultas}"
var="consulta" emptyMessage="Nenhuma consulta cadastrada">
<p:column>
<f:facet name="header">
<h:outputText value="Nome do Médico" />
</f:facet>
<h:outputText
value="#{consulta.agendaMedica.profissional.pessoa.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome da Agenda" />
</f:facet>
<h:outputText value="#{consulta.agendaMedica.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Data" />
</f:facet>
<h:outputText value="#{consulta.data}">
<f:convertDateTime type="date" pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Horário" />
</f:facet>
<h:outputText value="#{consulta.inicio}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<h:commandLink action="#{consultaMedicaBean.removerListener}"
title="Excluir consulta" update="consultas">
<h:graphicImage style="border:0;"
value="/recursos/imagens/CROSS16.BMP" />
<f:setPropertyActionListener
target="#{consultaMedicaBean.consulta}" value="#{consulta}" />
</h:commandLink>
</p:column>
</p:dataTable>
</p:outputPanel>[/code]
e o metodo do bean remover da lista.
public String removerListener() {
//Remove da tabela
Consulta consult = new Consulta();
consult = consulta;
consultas.remove(this.consulta);
//Remove do banco
Paciente paciente = new Paciente();
paciente = null;
ConsultaRN consultaRN = new ConsultaRN();
consult = consultaRN.buscarConsulta(agendaMedica,consult.getData(),hora);
consult.setPaciente(paciente);
consultaRN.salvar(consult);
return "";
}