Criar Componentes JSF no ManageBean

2 respostas
W

Gostaria de saber se alguem tem um exemplo basico de como criar componentes dinamicos JSF na classe bean.
Por exemplo:

Tela.jsf

<h:form id="idForm" >
   <h:panelGrid columns="2" binding="#{MyBean.MeuPainel}  >

			<h:column>   
					<h:outputText  binding="#{MyBean.MeuOutPut}" />
			</h:column>
			<h:column>
                                        <h:commandButton binding="#{MyBean.MeuButton}" />
                       <h:column>
</h:panelGrid>
</h:form>

[b]como ficaria a implementação desta tela no ManageBean.

quem tiver exemplos com outros componentes e quiser compartilhar seria bom tambem, afinal só que pegar o Know Hall.

Agradesco desde Já.[/b]

2 Respostas

luxu

meu MB:

package br.com.luxu.controller;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIData;
import javax.faces.event.ActionEvent;
import br.com.luxu.DAO.HibernateDAO;
import br.com.luxu.DAO.InterfaceDAO;
import br.com.luxu.classe.Cidade;
import br.com.luxu.util.FacesContextUtil;

@ManagedBean
@ViewScoped
public class CidadeBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Cidade cidade = new Cidade();
	private Cidade cidadeSelecionada;
	private UIData tabela;

	public void salvar(ActionEvent act){
		InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
		cidadeDAO.salvar(cidade);
		cidade = new Cidade();
	}
	
	public String alterar(){
		cidade = (Cidade) getTabela().getRowData();
		return null;
	}
	
	public void atualizar(ActionEvent evt){
		InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
		cidadeDAO.atualizar(cidade);
		cidade = new Cidade();
	}
	
	public void novo(ActionEvent evt){
		cidade = new Cidade();
	}
	
	public String excluir(){
		cidade = (Cidade) getTabela().getRowData();
		InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
		cidadeDAO.excluir(cidade);
		return null;
	}
	
	
	/**
	 * @param cidade the cidade to set
	 */
	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	/**
	 * @return the cidade
	 */
	public Cidade getCidade() {
		return cidade;
	}

	/**
	 * @param tabela the tabela to set
	 */
	public void setTabela(UIData tabela) {
		this.tabela = tabela;
	}

	/**
	 * @return the tabela
	 */
	public UIData getTabela() {
		return tabela;
	}

	/**
	 * @return the cidadeSelecionada
	 */
	public Cidade getCidadeSelecionada() {
		return cidadeSelecionada;
	}

	/**
	 * @param cidadeSelecionada the cidadeSelecionada to set
	 */
	public void setCidadeSelecionada(Cidade cidadeSelecionada) {
		this.cidadeSelecionada = cidadeSelecionada;
	}
}

a página dele:

<?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:ui="http://java.sun.com/jsf/facelets"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:p="http://primefaces.prime.com.tr/ui"
	template="../formularios/template.xhtml"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html">

	<ui:define name="conteudo">
		<p:layoutUnit position="center" header="Cidade">
			<h:form id="formPrincipal">
				<p:panel style="width:470px">
					<p:growl id="growl" showDetail="true" />
					<h:panelGrid columns="2" id="segundoPanel">
						<p:fieldset legend="Descrição"
							style="font-size:12px; width: 250px;">
							<p:inputText id="cidade-descricao" required="true"
								requiredMessage="Campo [Descrição] obrigatório"
								value="#{cidadeBean.cidade.descricao}" size="30" maxlength="30"/>
						</p:fieldset>

						<p:fieldset legend="Estado" style="font-size:12px;">
							<h:selectOneMenu id="selectEstado"
								value="#{cidadeBean.cidade.estado}">
								<f:selectItems value="#{entradaCidadesBBean.UF}" />
							</h:selectOneMenu>
						</p:fieldset>

					</h:panelGrid>
				</p:panel>
				<p:commandButton id="btCadastrar" value="Cadastrar"
					actionListener="#{cidadeBean.salvar}"
					update="formTabela,formPrincipal" image="ui-icon-disk"
					rendered="#{cidadeBean.cidade.descricao == null}" />
				<p:commandButton id="btAlterar" value="Atualizar"
					actionListener="#{cidadeBean.atualizar}"
					update="formTabela,formPrincipal" image="ui-icon-disk"
					rendered="#{cidadeBean.cidade.descricao != null}" />
				<p:commandButton id="btNovo" value="Novo"
					actionListener="#{cidadeBean.novo}" update="formPrincipal"
					image="ui-icon-disk"
					rendered="#{cidadeBean.cidade.descricao != null}" />
			</h:form>
			<h:form id="formTabela">
				<p:dataTable id="tabela" var="cidades" scrollable="true"
					height="100" binding="#{cidadeBean.tabela}"
					value="#{entradaCidadesBBean.cidades}" emptyMessage="sem registros" style="font-size:12px;" >
					
					<p:column headerText="Descrição" footerText="Descrição"
						style="width:200px"
						filterMatchMode="contains" filterBy="#{cidades.descricao}">
						<h:outputText value="#{cidades.descricao}" />
					</p:column>
					
					<p:column headerText="Estado" footerText="Estado"
						style="width:50px"
						filterMatchMode="contains" filterBy="#{cidades.estado}">
						<h:outputText value="#{cidades.estado}" />
					</p:column>
					
					<p:column style="width:100px">
						<p:commandButton image="ui-icon-pencil" title="Alterar" action="#{cidadeBean.alterar}" update="formPrincipal" />
			    		<p:commandButton image="ui-icon-trash" title="Remover" oncomplete="confirmdlg.show()" />
		    			<p:confirmDialog message="Excluir?" header="Confirmar - #{cidades.descricao}" severity="alert" widgetVar="confirmdlg">
			                <p:commandButton value="Cancelar" update="formTabela" onclick="confirmdlg.hide()" />
			                <p:commandButton value="Confirmar" update="formTabela" action="#{cidadeBean.excluir}"/>
			    		</p:confirmDialog> 
					</p:column>
				</p:dataTable>
            </h:form>
		</p:layoutUnit>
	</ui:define>
</ui:composition>

espero ter ajudado...

W

LUXU

OBRIGADO PELA AJUDA,

NA VERDADE O QUE EU ESTOU PROCURANDO É COMO ATRIBUIR VALORES A TABELA DIREATEMENTE NO BEAN ENTENDEU.

Criado 23 de setembro de 2011
Ultima resposta 24 de set. de 2011
Respostas 2
Participantes 2