JSF - Perco o valor do atributo quando click no botao, porem, apenas desse atributo!

4 respostas
K

Ola pessoal
eu tenho um ManagedBean, onde eu controlo o estado da pagina e de acordo com ele, a pagina toma certas atitudes.
quando click no botao de revisar, se os dados nao estiverem igual ao cadastrado, ele marca como revisado, se nao, ele avisa o ao usuario que os dados nao estao e pede a ele para dar o motivo para que o cadastro precisa ser recadastrado.
porem, ao clicar no revisar, ele mostra o campo “motivo”, e ao clicar no botao Recadastrar, ele perde muda o status do cadastro como “Recadastrar”.
porem, quando click no “Recadastrar” ele perde o valor de “estadoAtual”.
Eu fiz o teste pra ver se ele perdia o valor de todos os atributos, porem, apenas o “estadoAtual” que perde o valor.
Como eu faco pra nao perder o valor deste atributo(de preferenca sem passar ele como parametro novamente no botao)?

minha pagina

....
<a4j:outputPanel id="recadastroCampo" ajaxRendered="true" style="width:720px" >
	<h:outputLabel value="Motido de Recadastro" for="recadastro"></h:outputLabel>
	<h:inputText value="#{pessoaFisicaMB.pessoaFisica.recadastro.motivo}" maxlength="50" size="50" rendered="#{!(pessoaFisicaMB.estadoAtual.id==5)}"  styleClass="FormCampo"></h:inputText>
	|Status Pagina: <h:outputText value="#{pessoaFisicaMB.estadoAtual}"/>|//teste pra ver o valor de estado atual
	|CPF: <h:outputText value="#{pessoaFisicaMB.pessoaFisica.documento}"/>|//teste pra ver o valor de documento, pra ver se ele perdia tambem o valor, porem, ele nao perde
</a4j:outputPanel>        
<span style="width: 720px">
	<a4j:commandButton value="Cadatrar" 	action="#{pessoaFisicaMB.acaoCadastrar}">		</a4j:commandButton>
	<a4j:commandButton value="Recadastrar" 	action="#{pessoaFisicaMB.acaoRecadastrar}">		</a4j:commandButton>
	<a4j:commandButton value="Revisar" 		action="#{pessoaFisicaMB.acaoRevisar}" reRender="recadastroCampo">		</a4j:commandButton>
....
</span>

meu ManagedBeam

...
	public void acaoRevisar(){
		RetornoProcedure retornoProcedure = new RetornoProcedure();
		try {
			this.pessoaFisicaDB.revisar(this.pessoaFisica, retornoProcedure);
		} catch (KrusstException e) {
			e.printStackTrace();
		}
		
		if(retornoProcedure.getErroId()==0){
			FacesUtils.addInfoMessage("Dados do cadastro OK.");
		}else{
			FacesUtils.addErrorMessage(retornoProcedure.getErroMensagem());
			this.paginaEstadoAtual = PaginaEstado.ESTADO_DE_RECADASTRO;
		}
	}
	public void acaoRecadastrar(){
		RetornoProcedure retornoProcedure = new RetornoProcedure();		
		if(this.pessoaFisica.getRecadastro().getMotivo().length()<=5){
			FacesUtils.addErrorMessage("campo motivo de recadastro");
		}else{
			RecadastroDB recadastroDB = new RecadastroDB();

			try {
				recadastroDB.insert(this.getPessoaFisica().getId(), this.getPessoaFisica().getRecadastro(), retornoProcedure);
			} catch (KrusstException e) {
				e.printStackTrace();
			}
			
			if (retornoProcedure.getErroId()==0) {
				FacesUtils.addInfoMessage("Cadastro de Recadastro realizado com sucesso, código do cadastro: " + retornoProcedure.getCadastroId());
			
			} else {
				FacesUtils.addErrorMessage(retornoProcedure.getErroMensagem());
			}
		}
	}
...

abs
T+

4 Respostas

rponte

Você precisa manter o valor do “estadoAtual” entre as requisições, nem que seja na session :slight_smile: Mas aconselhado seria utilizando o componente t:saveState do Tomahawk.

Abraços.

K

rponte:
Você precisa manter o valor do “estadoAtual” entre as requisições, nem que seja na session :slight_smile: Mas aconselhado seria utilizando o componente t:saveState do Tomahawk.

Abraços.


eu dei uma procuraca e vi sobre isso!
vou ver se consigo outro meio, se nao, o jeito vai ser usar esse framework mesmo.

andei pensando com os meus butoes

existe meio de eu abilitar ou desabilitar um campo diretamente do managedbeam?

obrigado
T+

rponte

Sim, existe. Ou através de Component Binding ou você cata o componente da árvore na marra :slight_smile:

K

Sim, existe. Ou através de Component Binding ou você cata o componente da árvore na marra :)

perguntas
1-usando binding, eu faco como no value dos campos imputs por exemplo?seria isso?
2-pegando na marra, vc diz?

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");

3-uma coisa que eu ia te perguntar, usando o codigo de cima, vc pega os valores com “param” certo?
o que eu queria saber é, tem como fazer um

request.form("meuCampo")

tem alguma coisa parecida com isso?
pegar o valor do campo sem ser via parametro, direto do form?

obrigado pela ajuda cara
vc tem me ajudado em praticamente todos os meus posts

T+
abs

Criado 13 de maio de 2008
Ultima resposta 13 de mai. de 2008
Respostas 4
Participantes 2