Vraptor 3 + Boleto

2 respostas
salmaox

Boa Noite,

Gostaria de uma ajuda para conseguir enviar os dados do aluno para o método geraBoleto() da classe BoletoHsbc. Ao clicar no link “Gerar Boleto” da view exibeDados.jsp ele irá gerar o pdf do boleto. A view exibeDados.jsp está trazendo a lista corretamente, no entanto não sei como enviá-la através do link para o método geraBoleto().

Muito obrigado

public class BoletoHsbc {

    static int codBanco;
    static Generator generator;

    private String getTime() {
        return new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime());
    }
    
	public void geraBoleto(Aluno aluno) {

   JBoletoBean jBoletoBean = new JBoletoBean();
   jBoletoBean.setDataDocumento(getTime());
   jBoletoBean.setAceite("NÃO");
   jBoletoBean.setNoDocumento(String.valueOf(aluno.getIdAluno()));
   jBoletoBean.setCedente("FERBIT ENSINO DE IDIOMAS LTDA   \t \t       03.655.813/0001-08");
   jBoletoBean.setCedenterecibo("FERBIT ENSINO DE IDIOMAS LTDA");
   jBoletoBean.setNomeSacado(aluno.getNome());
   jBoletoBean.setEnderecoSacado(aluno.getEndereco());
   jBoletoBean.setBairroSacado(aluno.getBairro());
   jBoletoBean.setCidadeSacado("Cruzeiro");
   jBoletoBean.setUfSacado(aluno.getEstado());
   jBoletoBean.setCepSacado(aluno.getCep());
   jBoletoBean.setCpfSacado(aluno.getCpf());
   jBoletoBean.setLocalPagamento("ATE O VENCIMENTO, PREFERENCIALMENTE NO HSBC");
   jBoletoBean.setLocalPagamento2("APOS O VENCIMENTO, SOMENTE NO HSBC");
   
   jBoletoBean.setInstrucao1("");
   jBoletoBean.setInstrucao2("Após o venc. cobrar valor do documento + 2% de multa e 1% a.m.juros de mora.");
   jBoletoBean.setInstrucao3("A promoção dos 40% só será válida para pagamento até o dia 21/11/2011");
   jBoletoBean.setInstrucao4("");
   
   jBoletoBean.setDataVencimento("21/11/2011");
   jBoletoBean.setParcela("001/001");
   jBoletoBean.setCarteira("CNR");
   jBoletoBean.setAgencia("3685390");
   
   jBoletoBean.setCodCliente("36853900"); //essa parte é Ag/Cód Cedente
   jBoletoBean.setNossoNumero(String.valueOf(aluno.getIdAluno()).concat(jBoletoBean.getTresUltimosNossoNumero(jBoletoBean.getNoDocumento(),    jBoletoBean.getAgencia(), jBoletoBean.getDataVencimento())), 15);

   jBoletoBean.setValorBoleto("14.99");
   Generator generator2 = new PDFGenerator(jBoletoBean,JBoleto.HSBC);
   JBoleto jBoleto = new JBoleto(generator2, jBoletoBean,JBoleto.HSBC);
   
   jBoleto.addBoleto();
   jBoleto.closeBoleto("boleto.pdf");
   
 }
}

Alunos Controller

@Resource
public class AlunosController {

	private final AlunoDAO dao;
	private final Result result;
	private final Validator validator;
	private final AlunoWeb alunoWeb;

	public AlunosController(AlunoDAO dao, Result result, Validator validator, AlunoWeb alunoWeb) {
		this.dao = dao;
		this.result = result;
		this.validator = validator;
		this.alunoWeb = alunoWeb;
	}

	/* Abre o formulário de login */
	@Get
	@Path("/acesso")
	public void loginForm() {
	}

	/* Executa o Login */
	@Post
	@Path("/acesso")
	public void acesso(Aluno aluno, String senha) {

		Aluno carregado = dao.carrega(aluno);
		alunoWeb.login(carregado);

		Validacao val = new Validacao(dao, validator);
		val.validaAcesso(aluno,senha);
		validator.onErrorUsePageOf(AlunosController.class).loginForm();

		result.redirectTo(this).exibeDados(aluno);
	}

	@Restrito
	@Path("/exibeDados")
	public List<Aluno> exibeDados(Aluno aluno) {
		return dao.carregaDadosAluno(aluno);
	}
	
	@Get
	@Path("/boleto")
	public void geraBoleto(Aluno aluno){
		BoletoHsbc hsbc = new BoletoHsbc();
		hsbc.geraBoleto(aluno);
		result.redirectTo(this).boletoGerado();
	}
	
	@Restrito
	public void boletoGerado(){}

	@Path("/logout")
	public void logout() {
		alunoWeb.logout();
		result.redirectTo(AlunosController.class).loginForm();
	}

exibeDados.jsp

<c:forEach items="${alunoList}" var="aluno">
	<p><span style="font-weight: bold;">Aluno(a):</span> ${aluno.nome}</p>
	<p><span style="font-weight: bold;">CPF:</span> ${aluno.cpf}</p>
	<p><span style="font-weight: bold;">Endereço:</span> ${aluno.endereco}</p>
	<p><span style="font-weight: bold;">Bairro:</span> ${aluno.bairro}</p>
	<p><span style="font-weight: bold;">Cidade:</span> ${aluno.cidade.descricao}</p>
	<p><span style="font-weight: bold;">UF:</span> ${aluno.estado}</p>
	<p><span style="font-weight: bold;">CEP:</span> ${aluno.cep}</p>
</c:forEach>

	<div style="padding-top:10px; padding-bottom:10px">
<!--		<form action="<c:url value="boleto"/>" method="post" />-->
<!--			<input type="submit" value="Gerar Boleto" >-->
<!--		</form>-->
<a href="<c:url value="boleto"/>">Gerar Boleto</a>
	</div>

2 Respostas

Lucas_Cavalcanti

se for via form vc pode colocar vários inputs hidden com os ids dos alunos. Com o link vc precisa montar a query string na mão, ou usar javascript pra fazer isso.

salmaox

Sim, acabei fazendo dessa forma, colocando o resultado da lista dentro de campos via form. Mudei o método na controller pra @Post.

Deu certo!

Obrigado Lucas

Criado 9 de novembro de 2011
Ultima resposta 10 de nov. de 2011
Respostas 2
Participantes 2