JSF - <t:selectOneMenu>

4 respostas
robson_vs

Bom galera to desenvolvendo minha primeira aplicação usando jsf e estou criando um form para preenchimento de alguns dados e gostaria de saber como eu faço para popular um com intens do meu banco???

tenho a seguinte página jsf
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 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" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
		<title></title>
	</head>
	<body>
		<div style="position: absolute;left: 10;top: 10;width: 800;height: 40;">
			<jsp:include page="header.jspf"/>
		</div>

		<f:view>
			<f:loadBundle basename="messages" var="msgs"/>
			
			<t:panelTabbedPane style="position: absolute; left:10;top:100;width: 800;height:300;">
			
				<t:panelTab label="#{msgs.tituloCadastroFuncionario}">
					<t:panelGrid cellpadding="50" cellspacing="50">
						<h:form>
							<h:outputText style="position: absolute;left: 100;top: 200;width: 200;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" value="#{msgs.textoFuncionario}"/>
							<h:inputText style="position: absolute;left: 200;top: 200;width: 200;height: 20;" required="true" tabindex="1" styleClass="inputText" id="funcionario" value="#{FuncionarioBean.funcionarioVO.nome}" />	
							<h:message style="position: absolute;left: 400;top: 200;width: 300;height: 20;color: #EDAA9B;font-size: 12px;padding-left: 4px;padding-top: 4px;" for="funcionario" styleClass="error"/>
							
							<h:outputText style="position: absolute;left: 100;top: 230;width: 200;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" value="#{msgs.textoEmail}"/>
							<h:inputText style="position: absolute;left: 200;top: 230;width: 200;height: 20;" required="true" tabindex="2" styleClass="inputText" id="email" value="#{FuncionarioBean.funcionarioVO.email}" />
							<h:message style="position: absolute;left: 400;top: 230;width: 300;height: 20;color: #EDAA9B;font-size: 12px;padding-left: 4px;padding-top: 4px;" for="email" styleClass="error"/>
							
							<h:commandButton style="position: absolute;left: 200;top: 260;width: 150;height: 20;" tabindex="3" id="gravarFuncionario" value="#{msgs.botaoSalvar}" action="#{FuncionarioBean.incluirFuncionarios}" />
							<h:message style="position: absolute;left: 400;top: 260;width: 200;height: 20;color: #EDAA9B;font-size: 12px;padding-left: 4px;padding-top: 4px;" for="gravarFuncionario" styleClass="error"/>
						</h:form>
					</t:panelGrid>
				</t:panelTab>
				
				<t:panelTab label="#{msgs.tituloCadastroDepartamento}">
					<t:panelGrid cellpadding="50" cellspacing="50">
					<h:form>
						<h:outputText style="position: absolute;left: 100;top: 200;width: 200;height: 20;color:#557755;font-size: 12px;padding-left: 4px;padding-top: 4px;" value="#{msgs.textoDepartamento}"/>
						<h:inputText style="position: absolute;left: 200;top: 200;width: 200;height: 20;" required="true" tabindex="1" id="departamento" value="#{DepartamentoBean.departamento.nome}" />
						<h:message style="position: absolute;left: 400;top: 200;width: 200;height: 20;color:#EDAA9B;font-size: 12px;padding-left: 4px;padding-top: 4px;" for="departamento"/>
						
						<h:outputText style="position: absolute;left: 100;top: 230;width: 150;height: 20;color: #557755;font-size: 12px;padding-left: 4px;padding-top: 4px;" value="#{msgs.textoFuncionario}"/>

						<t:selectOneMenu style="position: absolute;left: 200;top: 230;width: 200;height: 20;" required="true" tabindex="2" id="funcionario">
<%--
							<f:selectItems value="#{DepartamentoBean.departamento.funcionario.identificador}"/>
--%>
	 					</t:selectOneMenu>
						<h:message style="position: absolute;left: 400;top: 230;width: 230;height: 20;color: #EDAA9B;font-size: 12px;padding-left: 4px;padding-top: 4px;" for="funcionario"/>

						<h:commandButton style="position: absolute;left: 200;top: 260;width: 150;height: 20;" id="gravarDepartamento" value="#{msgs.botaoSalvar}" action="valor" tabindex="3" />
						<h:message style="position: absolute;left: 400;top: 260;width: 230;height: 20;color: #EDAA9B;font-size: 12px;padding-left: 4px;padding-top: 4px;" for="gravarDepartamento" styleClass="error"/>
					</h:form>
					</t:panelGrid>
				</t:panelTab>
				
			</t:panelTabbedPane>
		</f:view>
		
		<div align="center" style="position: absolute;left: 10;top: 400;width: 800;height: 55;">
			<jsp:include page="footer.jspf"/>
		</div>		
	</body>
</html>
e o seguintes managedbeans DepartamentoBean
package br.com.greenline.falegreen.managedbean;

import br.com.greenline.falegreen.delegate.DepartamentoDelegate;
import br.com.greenline.falegreen.model.Departamento;

public class DepartamentoBean {

	private Departamento departamento = new Departamento();

	public String incluiDepartamentos() {

		String action = null;
		System.out
				.println("Executando o metodo incluiDepartamentos da classe DepartamentoBean: ");

		if (action == null) {

			DepartamentoDelegate departamentoDelegate = new DepartamentoDelegate();
			departamentoDelegate.salvar(departamento);

			System.out.println("OK - ");

			departamento = new Departamento();

			action = "success";
		} else {
			action = "failure";
			System.out.println("Error");
		}

		return action;
	}

	public Departamento getDepartamento() {
		return departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}
}

Funcionario Bean

package br.com.greenline.falegreen.managedbean;

import br.com.greenline.falegreen.delegate.FuncionarioDelegate;
import br.com.greenline.falegreen.model.Funcionario;

public class FuncionarioBean {

private Funcionario funcionarioVO = new Funcionario();

public void incluirFuncionarios() {

String action = null;
System.out
.println("Tentando executar o metodo incluirFuncionario da classe FuncionarioBean: ");

if (action == null) {

FuncionarioDelegate funcionarioDelegate = new FuncionarioDelegate();
funcionarioDelegate.salvar(funcionarioVO);

action = "success";

System.out.print("ok - " + funcionarioVO.getNome());
System.out.println(action);

funcionarioVO = new Funcionario();

action = "success";
} else {
action = "failure";
System.out.println("Error");
System.out.println(action);
}
}

public Funcionario getFuncionarioVO() {
return funcionarioVO;
}

public void setFuncionarioVO(Funcionario funcionarioVO) {
this.funcionarioVO = funcionarioVO;
}
}

4 Respostas

ACDias

No método getIdentificador do seu funcionário, em vez de apenas retornar retorne um array de Strings q vão conter os valores do componente, faça uma consulta ao banco com os dados q vc quer e o retorno dessa consulta vc joga no array de strings q deverá ser retornado.

Nunca tentei, mas creio q funcione.

bebad

bro eu aprendi que NUNCA devo fazer consultas ao banco usando JSF manjou ???
pode te dar mais trabalho fazer um servlet, mas vc garante sua seguranca, mediante ataques hacker.

faça bem feito, pra no futuro nao tomar um
OWNED na index da sua app.

[]´s bebad.

robson_vs

q vc sugere cara???

preciso preencher este campo e ñ tenho idéia de como faze-lo talvez jstl???

robson_vs

Então minha consulta ñ esta no jsf e sim no ejb… estou trazendo uma linda mais ñ estou acertando a coloca-la na <f:selectItems /> para preencher com os dados.

Alguem tem idéia de como fazer???

Agradeço a anteção de todos

Criado 4 de setembro de 2006
Ultima resposta 8 de set. de 2006
Respostas 4
Participantes 3