Problems saving with selectOneMenu.

Asked

Viewed 57 times

0

I’m trying to save a record of Activities with information from Favored.

I cannot 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>

Someone can give me a boost?

inserir a descrição da imagem aqui

1 answer

0

you need to popular the Rd in the save method before sending to the DAO.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.