Atualizar componente em outro form dentro de um tabview

0 respostas
G

Bom dia pessoal, sou novo no fórum e estou postando esse tópico pois não encontrei nada a respeito quanto a atualização de um componente JSF via AJAX!
Meu problema é o seguinte!
Tenho um tabview e varias tabs dentro dele (um Crud dividido em abas), cada tab tem seu form, o que eu quero é que quando eu insira um cadastro atualize outro componente que está em uma outra tab, por exemplo:
<p:tabView>
<p:tab id=“cadastro”>
<h:form>
<h:outputLabel value=“Login” />
<p:inputText id=“login” value="#{usuarioController.usuario.login}" required=“true” label=“Login” />

<h:outputLabel value=“Senha” />
<p:password id=“senha” value="#{usuarioController.usuario.senha}" required=“true” label=“Senha” />

<p:commandButton actionListener="#{usuarioController.inserir}"
value=“Inserir”
update=“painel:tableLista,id_do_meu_componente,aba,form???”
style=“font-size:xx-small”
ajax=“true”/>

</h:form>
</p:tab>

<p:tab id=“Excluir”>
<h:form>
<!-- Esse componente que quero que atualize quando clicado no botão Inserir do form que está dentro da tab cadastro -->
<p:selectOneMenu id=“selectUsuariosCadastro”
title=“Usuários”
value="#{usuarioController.usuario.id}"
valueChangeListener="#{usuarioController.usuarioSelecionado}"
required=“true”
requiredMessage=“Campo obrigatório” style=“font-size:xx-small;width:250px;”>

<f:selectItem itemLabel=“Escolha o usuário” style=“font-size:xx-small” />
<f:selectItems value="#{usuarioController.listarUsuarios}" style=“font-size:xx-small” />
</p:selectOneMenu>

… e assim vai

</h:form>
</p:tab>

</p:tabView>

Abaixo meu xhtml e minha Bean

usuarios.xhtml

<?xml version=‘1.0’ encoding=‘UTF-8’ ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:p=“http://primefaces.prime.com.tr/ui
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets”>

<h:head>
<title>Gerenciamento de Usuários</title>
<link rel=“stylesheet” type=“text/css” href=“css/style.css” />
</h:head>
<h:body>

&lt;div class="cabecalho"&gt;&lt;/div&gt;
&lt;div class="main" style="text-align:center"&gt;
	&lt;div class="div_principal"&gt;
		&lt;div class="menu_esquerdo"&gt;		
		&lt;p:panel header="Menu" style="width:180px;font-size:small;text-align:left"&gt;		
			&lt;h:form&gt;				
					&lt;p:menu style="border:0px"&gt;
						&lt;p:submenu label="Gerenciar"&gt;
							&lt;p:menuitem value="Novo Usuário" update="messages"
								oncomplete="novoUsuario.show()" icon="ui-icon-disk"
								styleClass="menu_item" /&gt;
							&lt;p:menuitem value="Editar Usuário" update="messages"
								oncomplete="editarUsuario.show()" styleClass="menu_item" /&gt;
							&lt;p:menuitem value="Excluir Usuário" update="messages"
								oncomplete="excluirUsuario.show()"
								icon="ui-icon-arrowrefresh-1-w" styleClass="menu_item" /&gt;
						&lt;/p:submenu&gt;
					&lt;/p:menu&gt;
				&lt;/h:form&gt;
			&lt;/p:panel&gt;
		&lt;/div&gt;
		
		&lt;div class="conteudo"&gt;		
			&lt;p:tabView 
				style="width:500px;font-size:xx-small;margin-bottom:20px;"
				autoHeight="false"&gt;
				&lt;p:tab title="Cadastrar Usuário" id="tab1" &gt;
					
					&lt;h:form&gt;
						&lt;h:panelGrid columns="2" cellpadding="3" styleClass="aba_texto"&gt;

							&lt;h:outputLabel value="Login" /&gt;
							&lt;p:inputText id="login"
								value="#{usuarioController.usuario.login}" required="true"
								label="Login" /&gt;


							&lt;h:outputLabel value="Senha" /&gt;
							&lt;p:password id="senha"
								value="#{usuarioController.usuario.senha}" required="true"
								label="Senha" /&gt;


							&lt;h:outputLabel value="Nome" /&gt;
							&lt;p:inputText id="nome" value="#{usuarioController.usuario.nome}"
								required="true" label="Nome" /&gt;


							&lt;h:outputLabel value="Sobrenome " /&gt;
							&lt;p:inputText id="sobrenome"
								value="#{usuarioController.usuario.sobreNome}" /&gt;


							&lt;h:outputLabel value="E-mail" /&gt;
							&lt;p:inputText id="email"
								value="#{usuarioController.usuario.email}" required="true"
								label="email" /&gt;


							&lt;h:outputLabel value="Status:" /&gt;
							&lt;p:selectOneRadio id="status"
								value="#{usuarioController.usuario.status}"&gt;
								&lt;f:selectItem itemLabel="Ativo" itemValue="1" /&gt;
								&lt;f:selectItem itemLabel="Desativo" itemValue="0" /&gt;
							&lt;/p:selectOneRadio&gt;

							&lt;p:commandButton actionListener="#{usuarioController.control}"
								value="Inserir" 
								update="painel:tableLista" 
								style="font-size:xx-small" 
								ajax="true"/&gt;
								
							&lt;p:commandButton value="Limpar" type="reset"
								style="font-size:xx-small" /&gt;							

						&lt;/h:panelGrid&gt;
						&lt;p:messages id="messages" showDetail="false" autoUpdate="true"
							redisplay="" /&gt;
					&lt;/h:form&gt;	
				&lt;/p:tab&gt;

				&lt;p:tab title="Editar Usuário"  id="tab2"&gt;
					&lt;h:form&gt;
						&lt;h:panelGrid columns="2" cellpadding="3" styleClass="aba_texto"&gt;
							&lt;h:outputLabel value="Usuário:" /&gt;
							&lt;p:selectOneMenu title="Usuários"
								value="#{usuarioController.usuario.id}" required="true"
								requiredMessage="Campo obrigatório"
								style="font-size:xx-small;width:250px;"
								id="selectUsuariosEditar"&gt;
								&lt;f:selectItem itemLabel="Escolha o usuário"
									style="font-size:xx-small" /&gt;
								&lt;f:selectItems value="#{usuarioController.listarUsuarios}"
									style="font-size:xx-small" /&gt;
							&lt;/p:selectOneMenu&gt;

							&lt;h:outputLabel value="Nome:" /&gt;
							&lt;p:inputText id="loginEditar"
								value="#{usuarioController.usuario.login}" /&gt;
							&lt;h:outputLabel value="Senha" /&gt;
							&lt;p:password id="senha"
								value="#{usuarioController.usuario.senha}" /&gt;
							&lt;h:outputLabel value="Status:" /&gt;
							&lt;p:selectOneRadio value="#{usuarioController.usuario.status}"&gt;
								&lt;f:selectItem itemLabel="Ativado" itemValue="1" /&gt;
								&lt;f:selectItem itemLabel="Desativado" itemValue="0" /&gt;
							&lt;/p:selectOneRadio&gt;
							&lt;p:commandButton action="#{usuarioController.atualizar}"
								value="Atualizar" style="font-size:xx-small" /&gt;
						&lt;/h:panelGrid&gt;
					&lt;/h:form&gt;
				&lt;/p:tab&gt;
				&lt;p:tab title="Excluir"  id="tab3" rendered=""&gt;
					&lt;h:form  id="c"&gt;
							&lt;h:panelGrid id="selectUsuariosPanel" columns="2" cellpadding="3"
								styleClass="aba_texto"&gt;
									&lt;p:selectOneMenu  
										id="selectUsuariosCadastro"
										title="Usuários"
										value="#{usuarioController.usuario.id}" 
										valueChangeListener="#{usuarioController.usuarioSelecionado}"
										required="true"
										requiredMessage="Campo obrigatório"
										style="font-size:xx-small;width:250px;"&gt;
										&lt;f:selectItem itemLabel="Escolha o usuário"
											style="font-size:xx-small" /&gt;
										&lt;f:selectItems value="#{usuarioController.listarUsuarios}" 
											style="font-size:xx-small" /&gt;
									&lt;/p:selectOneMenu&gt;			
									
									&lt;h:outputText id="usuarioSelecionadoText" value="#{usuarioController.usuario.id}" /&gt;			

								&lt;p:commandButton value="Excluir"
									onclick="confirmation.show()" type="button" ajax="true"
									style="font-size:xx-small" /&gt;
  
								&lt;p:confirmDialog message="Tem certeza que deseja excluir ?"
									header="Exclusão de Usuário" severity="alert"
									widgetVar="confirmation"&gt;
									&lt;p:commandButton id="confirm" value="Sim"
										oncomplete="confirmation.hide()"
										action="#{usuarioController.excluir}"
										style="font-size:xx-small"
										update="painel:tableLista,selectUsuariosCadastro" /&gt;
									&lt;p:commandButton id="decline" value="Não"
										style="font-size:xx-small" onclick="confirmation.hide()"
										type="button" /&gt;
								&lt;/p:confirmDialog&gt;
							&lt;/h:panelGrid&gt;
					&lt;/h:form&gt;							
				&lt;/p:tab&gt;
			&lt;/p:tabView&gt;

			&lt;h:form id="painel"&gt;
				&lt;h:panelGrid&gt;
					&lt;p:dataTable id="tableLista" value="#{usuarioController.usuarios}"
						paginator="true" rows="7" paginatorPosition="top"
						paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
						rowsPerPageTemplate="5,10,15" var="usuario"
						style="width:500px;font-size:x-small;"
						rowKey="#{usuarioController.usuario.id}"
						selection="#{usuarioController.selectedUsuario}"
						selectionMode="single"&gt;
						&lt;p:column styleClass="colunm_text"&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="ID" /&gt;
							&lt;/f:facet&gt;
							&lt;h:outputText value="#{usuario.id}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column styleClass="colunm_text"&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="Login" /&gt;
							&lt;/f:facet&gt;
							&lt;h:outputText value="#{usuario.login}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column styleClass="colunm_text"&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="Nome " /&gt;
							&lt;/f:facet&gt;
							&lt;h:outputText value="#{usuario.nome} #{usuario.sobreNome}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="E-mail" /&gt;
							&lt;/f:facet&gt;
							&lt;h:outputText value="#{usuario.email}" /&gt;
						&lt;/p:column&gt;
						&lt;p:column styleClass="colunm_text"&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="Status" /&gt;
							&lt;/f:facet&gt;
							&lt;h:outputText value="#{usuario.status}" /&gt;
						&lt;/p:column&gt;
					&lt;/p:dataTable&gt;
				&lt;/h:panelGrid&gt;
			&lt;/h:form&gt;

			&lt;!--  Telas de Cadastro, Edição e Exclusão --&gt;

			&lt;!--Inserção --&gt;
			&lt;p:dialog header="Cadastrar novo usuário" widgetVar="novoUsuario"
				resizable="false" modal="true" showEffect="clip" width="500"
				style="font-size:small;"&gt;
				&lt;h:form prependId="false"&gt;
					&lt;h:panelGrid columns="2" cellpadding="3" styleClass="aba_texto"&gt;
						&lt;h:outputLabel value="Nome" /&gt;
						&lt;p:inputText id="nome" required="true" label="Firstname"
							value="#{usuarioController.usuario.login}" /&gt;
						&lt;h:outputLabel value="Senha" /&gt;
						&lt;p:password id="senha" value="#{usuarioController.usuario.senha}"
							required="true" /&gt;
						&lt;h:outputLabel value="Status:" /&gt;
						&lt;p:selectOneRadio value="#{usuarioController.usuario.status}" style="font-size:xx-small"&gt;
							&lt;f:selectItem itemLabel="Ativo" itemValue="1" /&gt;
							&lt;f:selectItem itemLabel="Desativo" itemValue="0" /&gt;
						&lt;/p:selectOneRadio&gt;
						&lt;h:commandButton action="#{usuarioController.control}"
							value="Inserir" /&gt;
					&lt;/h:panelGrid&gt;
				&lt;/h:form&gt;
			&lt;/p:dialog&gt;

			&lt;!-- Edição --&gt;
			&lt;p:dialog header="Edição de Usuário" widgetVar="editarUsuario"
				resizable="false" modal="true" showEffect="clip" width="500"
				style="font-size:small;"&gt;
				&lt;h:form prependId="false"&gt;
					&lt;h:panelGrid columns="2" cellpadding="3" styleclass="aba_texto"&gt;
						&lt;h:outputLabel value="Nome:" style="font-size:xx-small" /&gt;
						&lt;p:inputText id="nome_usuario"
							value="#{usuarioController.usuario.login}" /&gt;

						&lt;h:outputLabel value="Senha" /&gt;
						&lt;p:password id="senha_usuario"
							value="#{usuarioController.usuario.senha}" /&gt;

						&lt;h:outputLabel value="Status:" /&gt;
						&lt;p:selectOneRadio value="#{usuarioController.usuario.status}"&gt;
							&lt;f:selectItem itemLabel="Ativado" itemValue="1" /&gt;
							&lt;f:selectItem itemLabel="Desativado" itemValue="0" /&gt;
						&lt;/p:selectOneRadio&gt;

						&lt;h:commandButton action="#{usuarioController.atualizar}"
							value="Atualizar" /&gt;
					&lt;/h:panelGrid&gt;
				&lt;/h:form&gt;
			&lt;/p:dialog&gt;

			&lt;!-- Exclusão --&gt;
			&lt;p:dialog header="Excluir usuário" widgetVar="excluirUsuario"
				resizable="false" modal="true" showEffect="clip" width="500"
				style="font-size:small;"&gt;
				&lt;h:form prependId="false"&gt;
					&lt;h:panelGrid columns="2" cellpadding="3" styleClass="aba_texto"&gt;
						&lt;h:inputText id="ID" value="#{usuarioController.usuario.id}" /&gt;
						&lt;h:commandButton action="#{usuarioController.excluir}"
							value="Excluir" style="font-size:xx-small" /&gt;
					&lt;/h:panelGrid&gt;
				&lt;/h:form&gt;
			&lt;/p:dialog&gt;


			
	
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;

</h:body>
</html>

UsuarioController.java

package br.com.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.context.FacesContext;

import javax.faces.event.ValueChangeEvent;

import javax.faces.model.SelectItem;

import br.com.bean.Usuario;
import br.com.hibernatedao.UsuarioDAO;

@ManagedBean(name = “usuarioController”)
public class UsuarioController {

public Usuario usuario;	

private Usuario selectedUsuario;

public List&lt;Usuario&gt; usuariosLista;


public List&lt;Usuario&gt; getUsuariosLista() {
	return usuariosLista;
}

public void setUsuariosLista(List&lt;Usuario&gt; usuariosLista) {
	this.usuariosLista = usuariosLista;
}

public void control() {
	try{
	UsuarioDAO inserirUsuario = new UsuarioDAO();
	inserirUsuario.Salvar(usuario);
	FacesContext.getCurrentInstance().addMessage(null,
			new FacesMessage("Cadastro efetuado com sucesso: " + usuario.getLogin()));
	}catch(Exception e){
		FacesContext.getCurrentInstance().addMessage(null,	
		new FacesMessage("Cadastro não concluído" ));
	}
}

public void excluir() {
	UsuarioDAO excluir = new UsuarioDAO();
	excluir.Excluir(usuario);
}

public void atualizar() {
	UsuarioDAO atualizarUsuario = new UsuarioDAO();
	atualizarUsuario.Atualizar(usuario);
}

public List&lt;Usuario&gt; getUsuarios(){
	UsuarioDAO listarUsuarios = new UsuarioDAO();		
	return listarUsuarios.listar();	 
}

public void reset() {
	usuario = null;
}

public Usuario getUsuario() {

	if (usuario == null) {
		usuario = new Usuario();
	}
	return usuario;
}

/**
 * Metódo responsável por listar todos os usuários
 * e adicionar num arrayList 
 * @return lista de usuarios do tipo SelectItem
 */
public List&lt;SelectItem&gt; getlistarUsuarios(){
	
		List&lt;SelectItem&gt; itens = new ArrayList&lt;SelectItem&gt;();
		List&lt;Usuario&gt; usuarios = new ArrayList();
		UsuarioDAO listarUsuario = new UsuarioDAO();
		
		usuarios = listarUsuario.listar();
		
		for(Usuario linha : usuarios){
			itens.add(new SelectItem(linha.getId(),linha.getLogin()));
		}	
		return itens;		
}	

public void UsuarioSelecionado(ValueChangeEvent e){
	this.setUsuarioSelecionado("teste - som");
}

public void setPessoa(Usuario usuario) {
	this.usuario = usuario;
}

public Usuario getSelectedUsuario() {
	return selectedUsuario;
}

public void setSelectedUsuario(Usuario selectedUsuario) {
	this.selectedUsuario = selectedUsuario;
}


private String usuarioSelecionado;	

public String getUsuarioSelecionado() {
	return usuarioSelecionado;
}

public void setUsuarioSelecionado(String usuarioSelecionado) {
	this.usuarioSelecionado = usuarioSelecionado;
}


private int count;

public int getCount() {
	return count;
}
public void setCount(int count) {
	this.count = count;
}	


public void increment() {
	count = count + numero;
	count++;
}


private int numero;


public int getNumero() {
	return numero;
}

public void setNumero(int numero) {
	this.numero = numero;
}

}

PS: Alguns métodos usei somente para testes e não removi da minha bean, assim como alguns componentes do meu xhtml!!
De ante mão, agradeço a todos!
Obrigado!

Criado 5 de junho de 2012
Respostas 0
Participantes 1