Ajuda com <a4j:support>

8 respostas
yorgan

Olá pessoal,
Estou tentando atualizar o valor de um objeto com o a4j mas não está funcionando.
Segue meu código:
JSP:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<f:view>
	<head>
	<link href="css/estilos.css" rel="stylesheet" type="text/css" />
	</head>

	<body style="border: 0px; padding: 0px;">
	<h:dataTable id="items" value="#{dataTableTeste.listaPessoa}" var="p" style="width:600px">
		<h:column>
			<h:form id="pessoas">
				<rich:simpleTogglePanel switchType="client" label="#{p.nmPessoa}"
					opened="false" styleClass="simpleTogglePanel" id="togllePessoa">
					<h:panelGrid border="0" columns="3" width="600"
						columnClasses="panelGridColunaEsquerda, panelGridColunaCentral, panelGridColunaDireita">
						<h:outputText value="Nome:" />
						<rich:inplaceInput styleClass="inputTextGrande"
							editClass="inputTextGrande" immediate="true"
							value="#{p.nmPessoa}">
							<a4j:support event="onchange" reRender="items" />
						</rich:inplaceInput>
						<h:commandButton value="Salvar" action="#{dataTableTeste.salvarPessoa}" />
					</h:panelGrid>
				</rich:simpleTogglePanel>
			</h:form>
		</h:column>
	</h:dataTable>
	</body>
</f:view>
</html>

Bean

public class DataTableRerenderTeste {
	
	private ListDataModel listaDataTable;
	private Pessoa pessoa;
	
	public DataModel getListaPessoa(){
		listaDataTable = new ListDataModel(montarLista());
		return listaDataTable;
	}
	
	@SuppressWarnings("unchecked")
	private List montarLista() {
		List lista = new ArrayList<Pessoa>();
		Pessoa p;
		for(int i = 0; i < 5; i++) {
			p = new Pessoa();
			p.setNmPessoa("Pessoa " + i);
			lista.add(p);
		}
		return lista;
	}
        
        //Estou debugando esse ponto, mas acaba chegando sempre o valor original
        //e não o novo valor que inseri no campo texto.
	public String salvarPessoa() {
		pessoa = (Pessoa) listaDataTable.getRowData();
		pessoa.getNmPessoa();
		return "pessoaSalva";
	}

}

Valeu pela ajuda

[]'s
Daniel

8 Respostas

D

Fala Daniel :smiley:

Vc precisa por sua tag a4j:support entre as tags a4:region:

<a4j:region>
<componente>
<a4j:support></a4j:support>
</componente>
</a4j:region>

Valeuu

[]'s

yorgan

Blza davidpadilha,
Mudei para

<h:outputText value="Nome:" />
						<a4j:region>
						<rich:inplaceInput styleClass="inputTextGrande"
							editClass="inputTextGrande" immediate="true"
							value="#{p.nmPessoa}" id="nmPessoa">
							<a4j:support event="onchange" reRender="nmPessoa" />
						</rich:inplaceInput>
						</a4j:region>

Mas agora depois que eu mudo o conteúdo do TXT, ao sair da caixa de texto, ele já retorna o conteúdo original.

Acho que fiz alguma coisa de errada com a tag ‘region’.

[]'s

D

Ele não está setando o valor…experimentar chamar alguma ação do seu managed bean e da um get nessa propriedade e verifica o valor!

yorgan

Eu estou verificando aqui:

public String salvarPessoa() {  
        pessoa = (Pessoa) listaDataTable.getRowData();  
        pessoa.getNmPessoa();  
        return "pessoaSalva";  
    }

que é a ação que é chamada pelo botão salvar. Mas o valor é sempre o original.
Mas depois que coloquei a tag region, ele nem está mais entrando no bean.

[]'s

D

experimentar usar oi a4j:form uma linha antes do region!

yorgan

Troquei o <h:form id=“pessoas”> por <a4j:form id=“pessoas”> mas não deu certo.
Alguém já conseguiu fazer esse tipo de situação funcionar? Poderia postar um exemplo que deu certo?
Já não sei se é o codigo que está errado ou alguma configuração mesmo.

[]´s

spranta

Olá Yorgan, estou com o mesmo problema, conseguiu resolver?

yorgan

Não consegui amigo. Acabei utilizando um actionListener mesmo.

[]'s

Criado 9 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 8
Participantes 3