Capturar dados + JSF

4 respostas
derheimen

Galera alguém poderia me dar uma help?
Estou implementando uma aplicação usando JSF, preencho os campos com as devidas informações, e quando submeto minha página não estou sabendo como capturar os dados informados.

Segue meus arquivos:
Página:

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<f:view>
		<f:loadBundle var="text" basename="resource"/>
		<head>
			<title><h:outputLabel value="#{text['proj.cadTitle']}"/></title>
			<meta http-equiv="pragma" content="no-cache">
			<meta http-equiv="cache-control" content="no-cache">
			<meta http-equiv="expires" content="0">    
			<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
			<meta http-equiv="description" content="This is my page">
			<link rel="stylesheet" type="text/css" href="PAGE-INF/css/styles.css"/>
			<link rel="stylesheet" type="text/css" href="PAGE-INF/css/scap.css"/>
		</head>

		<body>
			<h:form>
		    		<table align="center" width="70%">
					<tr>
						<td align="left">
							<fieldset>
								<legend>Cadastrar Dados Projeto</legend>
								<table width="100%">
									<tr>
										<td><h:outputText value="#{text['proj.codgProj']}" styleClass="rotulos"/></td>
										<td><h:inputText id="cdProjeto" value="" required="true" styleClass="edit" size="2"/></td>
										<td><h:message for="cdProjeto" styleClass="error"/></td>
									</tr>
									<tr>
										<td><h:outputText value="#{text['proj.sigla']}" styleClass="rotulos"/></td>
										<td><h:inputText id="siglaProjeto" value="" required="true" styleClass="edit" size="8"/></td>
										<td><h:message for="siglaProjeto" styleClass="error"/></td>
									</tr>
									<tr>
										<td><h:outputText value="#{text['proj.nome']}" styleClass="rotulos"/></td>
										<td><h:inputText id="nomeProjeto" value="" required="true" styleClass="edit" size="50"/></td>
										<td><h:message for="nomeProjeto" styleClass="error"/></td>
									</tr>
									<tr>
										<td colspan="2">
											<hr>
											<h:commandButton value="#{text['button.save']}" action="#{projeto.save}" id="save" styleClass="botoes"/>&nbsp;
											<h:commandButton value="Voltar" type="button" action="cancel" styleClass="botoes"/>&nbsp;
											<h:commandButton value="Limpar" type="reset" styleClass="botoes"/>
										</td>
									</tr>
								</table>
							</fieldset>
		    				</td>
					</tr>
				</table>
			</h:form>
		</body>
	</f:view>
</html>

O 1º botão desta página é o botão que submete a classe Projeto.
<h:commandButton value="#{text[‘button.save’]}" action="#{projeto.save}" id=“save” styleClass=“botoes”/>

faces-config.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">

	<application>
		<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
		<locale-config>
			<default-locale>pt_br</default-locale>
			<supported-locale>pt_br</supported-locale>
		</locale-config>
		<message-bundle>resources</message-bundle>
	</application>
	
	<navigation-rule>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
			<from-outcome>cadastrarProjeto</from-outcome>
			<to-view-id>/pages/projeto/ViewCadastrarProjeto.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
	
	<managed-bean>
		<managed-bean-name>projeto</managed-bean-name>
		<managed-bean-class>br.mt.abaco.scap.web.Projeto</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
		<managed-property>
			<property-name>projetoManager</property-name>
			<value>#{projetoManager}</value>
		</managed-property>
	</managed-bean>
</faces-config>

Classe para o formulário:

package br.mt.abaco.scap.web;

import br.mt.abaco.scap.model.ProjetoBean;
import br.mt.abaco.scap.service.ProjetoManager;

public class Projeto extends Base {

	private ProjetoBean projetoBean;

	private ProjetoManager projetoManager;

	public String save () {
		
		return "cadastrarProjeto";
	}

	public ProjetoBean getProjetoBean() {
		return projetoBean;
	}

	public void setProjetoBean(ProjetoBean projetoBean) {
		this.projetoBean = projetoBean;
	}

	public ProjetoManager getProjetoManager () {
		return projetoManager;
	}

	public void setProjetoManager (ProjetoManager projetoManager) {
		this.projetoManager = projetoManager;
	}
}

Após submeter a página e chegar no método save da classe Projeto, não sei como capturar os dados informados na página.

Alguém poderia me explixar ?
Desde de já agradeço.

4 Respostas

marcosbrandao

Heider Matos

Da maneira que vc esta fazendo vc nao vai conseguir capturar os dados que foram submitados na pagina. Para vc pegar os dados, vc tem que declara-los no seu bean, e atribui-los nos componentes de sua pagina

ex:

na classe

public class SeuBean{
     
      String cdProjeto;

      //implementaçõ dos gets e sets
}

na pagina (aqui vc faz a ligacao do componente com o bean)

<h:inputText id="cdProjeto" value="${seuBean.cdProjeto}"/>

quando vc for recuperar o valor informado na pagina, é soh vc pega-lo pelo se u metodo get.

derheimen

A minha classe ProjetoBean já existe com os seus métodos geters e seters, fiz a ligação do bean com o componente JSF.
Exemplo:

<h:inputText id="cdProjeto" value="${projeto.projetoBean.siglaProjeto}" required="true" styleClass="edit" size="2"/>

Mas agora ocorreu um erro na hora de carregar a página.

Devo mapear a classe ProjetoBean no arquivo fazes-config.xml ?
Por exemplo a minha classe Projeto que eu postei logo acima, TEM-UM projetoBean, neste caso devo referenciar a propriedade value do campo desta forma.

${projeto.projetoBean.siglaProjeto}

Fiz assim mas não funcionou.

Anderson_Schmidt

Tente trocar o sinal “$” por “#”.

Eu uso “$” apenas para coisas do tipo , ou seja, HTML puro.

Flws!
Schmidt

derheimen

Funcionou…
Criei o Bean, configurei o faces-config.xml, criei o input text corretamente.
Muito obrigado a todos pela ajuda.
Segue os arquivos corretos:
JSP

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<f:view>
		<f:loadBundle var="text" basename="resource"/>
		<head>
			<title>
				<h:outputLabel value="#{text['proj.cadTitle']}"/>
			</title>
			<meta http-equiv="pragma" content="no-cache">
			<meta http-equiv="cache-control" content="no-cache">
			<meta http-equiv="expires" content="0">    
			<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
			<meta http-equiv="description" content="This is my page">
			<link rel="stylesheet" type="text/css" href="PAGE-INF/css/styles.css"/>
			<link rel="stylesheet" type="text/css" href="PAGE-INF/css/scap.css"/>
		</head>

		<body>
			<h:form>
			    	<table align="center" width="70%">
					<tr>
						<td align="left">
							<fieldset>
								<legend>Cadastrar Dados Projeto</legend>
								<table width="100%">
									<tr>
										<td><h:outputText value="#{text['proj.codgProj']}" styleClass="rotulos"/></td>
										<td><h:inputText id="cdProjeto" value="#{projeto.projetoBean.cdProjeto}" required="true" styleClass="edit" size="2"/></td>
										<td><h:message for="cdProjeto" styleClass="error"/></td>
									</tr>
									<tr>
										<td><h:outputText value="#{text['proj.sigla']}" styleClass="rotulos"/></td>
										<td><h:inputText id="siglaProjeto" value="#{projeto.projetoBean.siglaProjeto}" required="true" styleClass="edit" size="8"/></td>
										<td><h:message for="siglaProjeto" styleClass="error"/></td>
									</tr>
									<tr>
										<td><h:outputText value="#{text['proj.nome']}" styleClass="rotulos"/></td>
										<td><h:inputText id="nomeProjeto" value="#{projeto.projetoBean.nomeProjeto}" required="true" styleClass="edit" size="50"/></td>
										<td><h:message for="nomeProjeto" styleClass="error"/></td>
									</tr>
									<tr>
										<td colspan="2">
											<hr>
											<h:commandButton value="#{text['button.save']}" action="#{projeto.save}" id="save" styleClass="botoes"/>&nbsp;
											<h:commandButton value="Voltar" type="button" action="cancel" styleClass="botoes"/>&nbsp;
											<h:commandButton value="Limpar" type="reset" styleClass="botoes"/>
										</td>
									</tr>
								</table>
							</fieldset>
		    			</td>
					</tr>
				</table>
			</h:form>
		</body>
	</f:view>
</html>

Classe controladora

package br.mt.abaco.scap.web;

import br.mt.abaco.scap.model.ProjetoBean;
import br.mt.abaco.scap.service.ProjetoManager;

public class Projeto extends Base {

	private ProjetoBean projetoBean = new ProjetoBean();

	private ProjetoManager projetoManager;

	public String save () {
		this.getProjetoManager().saveProjeto(this.getProjetoBean());
		return "cadastrarProjeto";
	}

	public ProjetoBean getProjetoBean() {
		return projetoBean;
	}

	public void setProjetoBean(ProjetoBean projetoBean) {
		this.projetoBean = projetoBean;
	}

	public ProjetoManager getProjetoManager () {
		return projetoManager;
	}

	public void setProjetoManager (ProjetoManager projetoManager) {
		this.projetoManager = projetoManager;
	}
}

faces-config.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">

	<application>
		<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
		<locale-config>
			<default-locale>pt_br</default-locale>
			<supported-locale>pt_br</supported-locale>
		</locale-config>
		<message-bundle>resources</message-bundle>
	</application>

	<navigation-rule>
		<from-view-id>/index.jsp</from-view-id>
		<navigation-case>
			<from-outcome>cadastrarProjeto</from-outcome>
			<to-view-id>/pages/projeto/ViewCadastrarProjeto.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>alterarProjeto</from-outcome>
			<to-view-id>/pages/projeto/ViewAlterarProjeto.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>

	<managed-bean>
		<managed-bean-name>projeto</managed-bean-name>
		<managed-bean-class>br.mt.abaco.scap.web.Projeto</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
		<managed-property>
			<property-name>projetoManager</property-name>
			<value>#{projetoManager}</value>
		</managed-property>
	</managed-bean>
</faces-config>
Criado 15 de março de 2007
Ultima resposta 15 de mar. de 2007
Respostas 4
Participantes 3