Include em Jsf [não pega o valor]

5 respostas
R

Estou tentando incluir em um jsf dentro de outra página jsf (usando o include), porém, a página chama o método mas não passa o valor do campo digitado.
Será que alguém poderia me ajudar ... sou iniciante com jsf.

Principal que recebe a página que vai incluir
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Teste include</title>
</head>
<body>

<f:subview id="teste">

<jsp:include page="/incluir_cargos.jsp"></jsp:include>

</f:subview>

</body>
</html>
Página que faz a inclusão:
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@taglib
	uri="http://java.sun.com/jsf/core" prefix="f"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view>
	<h:form>
		<br />
		<br />
		<table width="456" align="center">
			<tr>
				<td colspan="2" bgcolor="#F3A700">Informa&ccedil;&otilde;es sobre Cargos</td>
			</tr>
			<tr>
				<td class="textos_green"><strong>Descri&ccedil;&atilde;o
				: </strong><span class="textos_red">*</span></td>
				<td><h:inputText id="codigo" value="#{bCargo.cargo.descricao}" requiredMessage="Digite o cargo" required="true" styleClass="input_text" style="margin-left: 17px" immediate="true"/></td>
			</tr>
			<tr>
				<td width="128" class="textos_green" style="width: 138px"></td><td width="316" style="width: 308px">
				
				</td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td><h:commandButton value="Salvar" action="#{bCargo.salvarCargo}" styleClass="botao" immediate="true"></h:commandButton></td>
			</tr>
				
		</table>
	</h:form>
</f:view>
</body>
</html>
Bean
package br.com.church.bean;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import br.com.church.hibernate.Dao;
import br.com.church.hibernate.HibernateUtil;
import br.com.church.model.Cargo;


public class CargoBean {
	private Cargo cargo = new Cargo();
	List listCargos;
	
	public Cargo getCargo() {
		return cargo;
	}


	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}


	public String salvarCargo()
	{
		
		String retorno = "sucesso";
		Session session = null;
		try{
			
			session = HibernateUtil.getSession();
			session.beginTransaction();
			Date hoje = new Date(System.currentTimeMillis());
			
			cargo.setDterg(hoje);
			new Dao<Cargo>(session, Cargo.class).adiciona(cargo);
			session.beginTransaction().commit();
			
		}catch(Exception e){
			System.out.println("falha ao cadastrar Cargo");
			retorno="falha";
			e.printStackTrace();
		}finally{
			session.close();
		}
		
		
	return retorno;	
	}
	
	/*public List listaCargos(){
		
		listCargos = new ArrayList<Cargo>();
		
		Session session = null;
		
		session = HibernateUtil.getSession();
		session.beginTransaction();
		
		session.beginTransaction().commit();		
		
		return listCargos;
	}*/

	
	public List<Cargo> listaCargos() {
		
		
		Session session = null;
		try{
			session = HibernateUtil.getSession();
			session.beginTransaction();
			listCargos =  new Dao<Cargo>(session, Cargo.class).listaTudo();
			session.getTransaction().commit();
			
			
		}catch (Exception e) {
			System.out.println("Não foi possivel listar todas os blocos");
			e.printStackTrace();
		}finally{
			session.close();
		}
		return listCargos;
	}


	public List getListCargos() {
		return listCargos;
	}


	public void setListCargos(List listCargos) {
		this.listCargos = listCargos;
	}
}

XML

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">

	<managed-bean>
  		<description>Bean de Cargo</description>
  		<managed-bean-name>bCargo</managed-bean-name>
  		<managed-bean-class>br.com.church.bean.CargoBean</managed-bean-class>
  		<managed-bean-scope>request</managed-bean-scope>
 	</managed-bean>
 	
 		<managed-bean>
  		<description>Bean de Ministerios</description>
  		<managed-bean-name>bMinisterios</managed-bean-name>
  		<managed-bean-class>br.com.church.bean.MinisterioBean</managed-bean-class>
  		<managed-bean-scope>request</managed-bean-scope>
 	</managed-bean>
 	 	
  <navigation-rule> 
 <from-view-id>/principaljsf.jsp</from-view-id>
  <navigation-case>
   <from-action>#{bCargo.salvarCargo}</from-action>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/sucesso.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-action>#{bCargo.salvarCargo}</from-action>
   <from-outcome>falha</from-outcome>
   <to-view-id>/erro.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
 
   <navigation-rule> 
 <from-view-id>/incluir_ministerios.jsp</from-view-id>
  <navigation-case>
   <from-action>#{bMinisterios.salvarMinisterio}</from-action>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/sucesso.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-action>#{bMinisterios.salvarMinisterio}</from-action>
   <from-outcome>falha</from-outcome>
   <to-view-id>/erro.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>

  

</faces-config>

Estou usando o eclipse galileo

5 Respostas

gomesrod

A primeira coisa que eu tentaria corrigir é o botão Salvar. Ele está como Immediate, dessa maneira são puladas algumas etapas do processamento e os valores digitados não são “enviados” para o bean.
Tente retirar este atributo e ver se funciona.

Agora outra coisa: essa página com include está meio “bagunçada”, pois em ambas está o html completo com todas as tags ,,, etc.
Além de desperdiçar trabalho fazendo tudo duas vezes isso pode dar problema em alguns browsers.

R

Se eu retiro esse botão ele não faz nenhuma ação, apenas “pisca” a página =\ , mas porque isso?

Pode deixar que já organizei melhor a página.

gomesrod

Pode ser que tenha ocorrido algum erro de conversão ou validação, que ficou escondido porque não tem nenhum componente h:message ou h:messages.
Coloque um <h:messages> na página, ele vai te mostrar caso o jsf tenha gerado alguma mensagem de erro no processamento do formulário.

R

Fiz isso e não apareceu nada. =\

R

Resolvi… era só colocar subview na página que está sendo incluída.

Criado 31 de agosto de 2009
Ultima resposta 31 de ago. de 2009
Respostas 5
Participantes 2