Problems saving with selectOneMenu.

0

I'm trying to save an Activity record with Favored information.

I can not save in any way. I will put the code and please if anyone can help me thank you.

<

package br.com.sentinel.Bean;

import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import br.com.sentinela.DAO.ReceitaDespesaDAO;
import br.com.sentinela.Domain.ReceitaDespesa;
import br.com.sentinela.DAO.FavorecidoDAO;
import br.com.sentinela.Domain.Favorecido;


@SuppressWarnings("serial")
@ManagedBean
@ViewScoped


public class ReceitaDespesaBean implements Serializable{
	
	private ReceitaDespesa rd;
	
	public List<Favorecido> getFavorecidos() {
		return favorecidos;
	}
	public void setFavorecidos(List<Favorecido> favorecidos) {
		this.favorecidos = favorecidos;
	}

	private List<ReceitaDespesa> rds;
	private List<Favorecido> favorecidos;
	public ReceitaDespesa getRd() {
		return rd;
	}
	public void setRd(ReceitaDespesa rd) {
		this.rd = rd;
	}
	public List<ReceitaDespesa> getRds() {
		return rds;
	}
	public void setRds(List<ReceitaDespesa> rds) {
		this.rds = rds;
	}
	public List<Favorecido> getFavorecido() {
		return favorecidos;
	}
	public void setFavorecido(List<Favorecido> favorecidos) {
		this.favorecidos = favorecidos;
	}
	
	@PostConstruct
	public void listar() {
		try {
			ReceitaDespesaDAO rdDAO = new ReceitaDespesaDAO();
			rds = rdDAO.listar();
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar listar as RDs.");
			erro.printStackTrace();
		}
	}

	public void novo() {
		try {
			rd = new ReceitaDespesa();

			ReceitaDespesaDAO rdDAO = new ReceitaDespesaDAO();
			rds = rdDAO.listar();
			
			FavorecidoDAO favorecidoDAO = new FavorecidoDAO();
			favorecidos = favorecidoDAO.listar();
						
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao gerar uma as RDs");
			erro.printStackTrace();
		}
	}


	public void salvar() {
 		try {
 			ReceitaDespesaDAO rdDAO = new ReceitaDespesaDAO();
 			rdDAO.merge(rd);

			rd = new ReceitaDespesa();

			FavorecidoDAO favorecidoDAO = new FavorecidoDAO();
			favorecidos = favorecidoDAO.listar();			

			Messages.addGlobalInfo("Despesas salva com sucesso");
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar salvar uma atividade");
			erro.printStackTrace();
		}
	}

	public void excluir(ActionEvent evento) {
		try {
			rd = (ReceitaDespesa) evento.getComponent().getAttributes().get("rdSelecionada");

			ReceitaDespesaDAO rdDAO = new ReceitaDespesaDAO();
			rdDAO.excluir(rd);

			rds = rdDAO.listar();

			Messages.addGlobalInfo("RD removido com sucesso");
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover uma RD");
			erro.printStackTrace();
		}
	}

	public void editar(ActionEvent evento){
		try {
			rd = (ReceitaDespesa) evento.getComponent().getAttributes().get("rdSelecionada");

			FavorecidoDAO favorecidoDAO = new FavorecidoDAO();
			favorecidos = favorecidoDAO.listar();
						
			
		} catch (RuntimeException erro) {
			Messages.addFlashGlobalError("Ocorreu um erro ao tentar selecionar uma RD");
			erro.printStackTrace();
		}	
	}

}

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	 xmlns:h="http://java.sun.com/jsf/html"
      xmlns:jsf="http://xmlns.jcp.org/jsf"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      template="/templates/template.xhtml">
<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Atividades - receitas e despesas</title>
</h:head>
<ui:define name="conteudo">
<h:body >
<!-- <p:growl id="mensagem"/> -->
	<h:form id="formListagem">	
		<p:panel header="Atividades" >
			<p:dataTable emptyMessage="Nenhum registro encontrado."
				paginator="true"
				value="#{receitaDespesaBean.rds}" var="rd" id="tabela"
				rows="6"  rowsPerPageTemplate="6,12"
				>
				<f:facet name="header">
					<p:commandButton icon="ui-icon-plus" oncomplete="PF('dialogo').show();"
					actionListener="#{receitaDespesaBean.novo()}"
					update=":formCadastro:pnCadastro" />
					
					<p:button icon="ui-icon-arrowreturnthick-1-w" outcome="/paginas/principal.xhtml" >
					</p:button>
				</f:facet>

				<p:column headerText="Descrição" sortBy="#{rd.descricao}" filterBy="#{rd.descricao}">
					<h:outputText value="#{rd.descricao}" />
				</p:column>

				<p:column headerText="Tipo" sortBy="#{rd.RD}" filterBy="#{rd.RD}">
					<h:outputText value="#{rd.RD}" />
				</p:column>
				

				<p:column headerText="Opções">
				
					<p:commandButton icon="ui-icon-trash"
							actionListener="#{receitaDespesaBean.excluir}"
							update=":mensagem :formCadastro:pnCadastro :formListagem:tabela">
							<p:confirm header="Confirmação" message="Deseja excluir o estado?"
							icon="ui-icon-alert" />
							<f:attribute name="rdSelecionado" value="#{rd}" />
					</p:commandButton>
					
					<p:commandButton icon="ui-icon-pencil"
						actionListener="#{receitaDespesaBean.editar}"
						update=":mensagem :formCadastro:pnCadastro :formListagem:tabela"
						oncomplete="PF('dialogo').show();">
						<f:attribute name="rdSelecionado" value="#{rd}" />
					</p:commandButton>
					
					
					
					
				</p:column>
			</p:dataTable>
			
			<p:confirmDialog global="true">
				<p:commandButton value="Sim" type="button"
					styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
				<p:commandButton value="Não" type="button"
					styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
			</p:confirmDialog>
			
		</p:panel>
	</h:form>

	<p:dialog header="Atividades - Cadastro" widgetVar="dialogo"
		draggable="false" resizable="false" modal="false" closable="false">
		<h:form id="formCadastro">
			<h:panelGrid columns="2" id="pnCadastro">
				<p:outputLabel value="Descrição:" />
				<p:inputText maxlength="50" size="30" value="#{receitaDespesaBean.rd.descricao}"
				 required="true" requiredMessage="O campo 'Descrição' é obrigatório"/>
				
				<p:outputLabel value="Atividade:" />
				<p:selectOneRadio value="#{receitaDespesaBean.rd.RD}">
					<f:selectItem itemValue="R" itemLabel="Receita" />
					<f:selectItem itemValue="D" itemLabel="Despesa" />
					
				</p:selectOneRadio>
				
				
				
				<p:outputLabel value="Favorecido:" />
				<p:selectOneMenu filter="true" value="#{receitaDespesaBean.rd.favorecido}"
				                 converter="omnifaces.SelectItemsConverter"
				>
				
				<f:selectItem noSelectionOption="true"
						itemLabel="Selecione um favorecido" />				
				<f:selectItems value="#{receitaDespesaBean.favorecidos}" var="favorecido"
						           itemValue="#{favorecido}" itemLabel="#{favorecido.descricao}" />
				</p:selectOneMenu>
				
		
				
			</h:panelGrid>

			<h:panelGrid columns="2">
				<p:commandButton value="Salvar"  actionListener="#{favorecidoBean.salvar()}"
				 update=":mensagem :formCadastro:pnCadastro :formListagem:tabela"/>
				<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
			</h:panelGrid>
		</h:form>
	</p:dialog>
	
</h:body>
</ui:define>
</ui:composition>

Can someone give me strength?

    
asked by anonymous 27.10.2016 / 18:04

1 answer

0

You need to populate rd in the save method before sending it to DAO.

    
07.11.2016 / 20:10