JSF : Dando submit o tempo todo !?

12 respostas
marcioa1

Olá,

Na minha página JSF, há alguns selectOneRadio e um selectOneMenu. Acontece que eu preciso dar submit no onchange() toda hora, caso contrário meu managedBean não pega os valores.
Detalhe : Meu botão “pesquisar” está em outro form, porque quando estavam no mesmo form, a action associada ao botão não respondia.

O que estou fazendo de errado ?

Obrigado,

Márcio

12 Respostas

Ferryman

Olá,

Marcio, estava com um problema parecido, resolvi criando um método valueChangeListener no meu backing bean e linkando o selectOneRadio nele. Você precisa submeter toda hora? Com o valueChangeListener, você altera os selects, e quando der o submit ele aplica os valores de todos changes que você fez no backingBean.

Espero que te ajude

Falou

marcioa1

Ferryman,

O que você colocava dentro do método do changeListener ? Podes me dar um exemplo ? Na prática não seria mais um submit() ?

Márcio

urubatan

ta tentando implementar coisas que deveriam ser feitas com AJAX sem ajax …
pelo menos foi o que entendi pelo que tu falou …
pode ser que eu tenha entendido tudo errado :smiley:

Ferryman

Bom o que eu fiz acho que não se aplica ao seu caso…

No meu caso eu tenho um formulário dinamico, que é criado de acordo com minhas classes de negócio para que o usuario preencha. Assim sendo, eu não sei que componentes existem no formulario, então na instanciação dos componentes eu liguei todos eles com um valueChangeListener, aonde a partir do ValueChangeEvent eu pego o componente, seu ID e valor e adiciono em um mapa.
Assim, toda vez que eu dou submit, o changeListener processa todas as changes que ocorreram e insere os valores no mapa. Não sei se essa é uma boa abordagem, na verdade eu gostaria de utilizar o mapa direto como backing bean e fazer com que os componentes incluissem seus valores no mapa quando ocorrer o submit. Porem não sei se isso é possível.

Porque você precisa atualizar seu backingb no onchange? não pode ser direto no submit? o submit não está aplicando os valores no bean?

marcioa1

Urubatan

Não é AJAX não.
Na verdade é um simples formulário, com check boxes , um comboBox e dois inputText. Tenho um commandButton “pesquisar” que só funciona se estiver dentro de um form separado ( ??? ) . Este botão deveria disparar um action que iria ao banco etc …, mas se estiver no mesmo form ele não funciona.

Não sei o que fiz de errado para :

  1. o botão não funcionar no mesmo form
  2. ter que dar submit no onchanche o tempo todo de cada checkbox, inputText etc…

Ferryman,

O submit não está aplicando os valores. Tem alguma coisa errada no faces-config ?

Obrigado,

Márcio

Ferryman

Geralmente esses erros estranhos são bobeiras (pelo menos comigo, todo problema que eu demoro + de 20 min pra encontrar o misterioso erro, é sempre alguma boberinha no código).
Você não esqueceu de bindar o SelectOneRadio com o bb?

marcioa1

Eu usei o value, e não o binding

Márcio

marcioa1

Minha página

<h:form>
	<h:inputText value="#{formTeste.nome}"/>
	<br>
	&lt;h:selectOneRadio id="valorizacao" layout="lineDirection" styleClass="tx_preto" 
		   value="#{formTeste.valorizacao" &gt;
        &lt;f:selectItem itemLabel="Cliente" itemValue="Cliente" /&gt;
        &lt;f:selectItem itemLabel="Informado" itemValue="Informado" /&gt;
        &lt;f:selectItem itemLabel="Pago" itemValue="Pago" /&gt;
	&lt;/h:selectOneRadio&gt;
	<br>
	&lt;h:commandButton value="Pesquisar" action="#{formTeste.fazPesquisa}"/&gt;
	&lt;/h:form&gt;
meu managedBean
public class FormTeste {

	private String nome;
	private String valorizacao;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String fazPesquisa(){
		System.out.println("nome digitado : " + nome);
		System.out.println("valorização   : " + valorizacao);
		return null;
	}

	public String getValorizacao() {
		return valorizacao;
	}

	public void setValorizacao(String valorizacao) {
		this.valorizacao = valorizacao;
	}
	
}

O nome funciona, mas o checkbox não. Tenho que implantar valueChangeListener ?

Obrigado,

Márcio

Ferryman

Não sei se isso influencia, mas esta com erro de digitação no value do selectOne. Olha o cmapo value ta assim :

value="#{formTeste.valorizacao"

tenta corrigir pra ver se funciona :stuck_out_tongue:

marcioa1

Ferryman,

Estava errado mesmo. :oops:

Obrigado,

Márcio

Ferryman

rsrs
que bom que ajudei.
Esse é o tipo de problema que agente leva um tempão pra resolver, e outra pessoa, de bater o olho encontra.
XP ajuda muito com isso.

Abraço,

Ferry

J

Pessoal estou com um problema bem parecido com esse…
Estou usando um <:selectOneRadio> dentro de um rich:dataTable tive que no onchange utilizar uma função javascript (depois de muito pesquisar) para conseguir selecionar somente 1 de cada vez, mas tudo bem…
O meu problema está em capturar o value dos Radios dentro do MB, como podem ver estou utilizando o valueChangeListener, ele funcionou perfeitamente no Firefox por segurança fui testar no IE, e não é que não funcionou… no IE ele não chama meu método “respostaCotacaoMB.atualizaRespostaSelecionada”…
OBS.: Firefox 3 e Internet Explorer 7

Alguém pode me ajudar???

Segue o código do meu xhtml:

<rich:column>
                <f:facet name="header">
                    <h:outputText styleClass="headerText" value="" />
                </f:facet>
                <h:selectOneRadio id="myRadio"  onclick="dataTableSelectOneRadio(this);" valueChangeListener="#{respostaCotacaoMB.atualizaRespostaSelecionada}">
                    <f:selectItem itemValue="#{clonagem.resposta.cotacao.id}"/>
                </h:selectOneRadio>
            </rich:column>

Segue o código do meu MB:

public void atualizaRespostaSelecionada(ValueChangeEvent event) {
        respostaSelecionada = (String) event.getNewValue();
    }
Criado 18 de dezembro de 2006
Ultima resposta 29 de mai. de 2008
Respostas 12
Participantes 4