commandButton problemas parametros passados ActionListener

Bom dia Pessoal!!

Seguinte, em uma jsp tenho um botão, para colocar um produto no carrinho de compras, no actionListener referenciado no botão, recebo o código do produto a ser comprado. Qdo passo o parametro de forma fiza para o actionListener, tudo ok, funciona normal:

<h:commandButton value="Comprar" actionListener="#{Teste.eventTeste}" > # <f:param id="cod_prod" name="cod_prod" value="1"/> </h:commandButton>
Agora, passando o valor do parametro vindo de um managed bean, ele trata o nome do parametro, tráz normal, mas o valor vem nulo, assim:

<h:commandButton action="comrar"  value="Comprar"  actionListener="#{Teste.eventTeste}" >
                    <f:param id="cod_prod" name="cod_prod" value="#{ProdutoFacade.produto.cod_prod}"/>
               </h:commandButton>
 A classe referenciada no actionListener do botão é essa:
package beans;

import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Luiz Henrique
 */
public class Teste {
    
    /** Creates a new instance of Teste */
    public Teste() {
    }
    
    public void eventTeste( ActionEvent event ) {
        String a = event.getComponent().getId();
        System.out.print(a);
        
        UIComponent component = (UIComponent) event.getComponent();
        System.out.print(component);
        
        UIParameter parameter = (UIParameter) event.getComponent().findComponent("cod_prod");
        int cod_prod = Integer.parseInt( parameter.getValue().toString() );
        System.out.print(cod_prod);
    }
}
Seria algum problema de conversão ou algum outro problema?? Lembrando que o valor vindo de value="#{ProdutoFacade.produto.cod_prod}" não é nulo!!

Opa,

como está o valor de #{ProdutoFacade.produto.cod_prod} quando você clica no botão? Se eu não me engano o f:param chama este valor durante a restauração da árvore.

:pensativo:

Oi Marcos!!

A principio, vem preenchido, pelo menos ele é mostrado preenchido normalmente em 
<h:outputText value="#{ProdutoFacade.produtosDetalhes.cod_prod}"/>

na página jsp onde está o botão!!

Figueiredo,

Quando você clica no botão, debuga e veja qual é o valor do #{ProdutoFacade.produtosDetalhes.cod_prod}. Pelo seguinte fato. Ele não pega o valor na página e sim o valor desta variável.

:okok:

Marcos!!

Debugar, tudo bem, mas, era o que estavamos tentando fazer ontem, como pego o valor desta variável?? Qual seria a sintaxe??

Valeu

Opa,

Bom são 2 estágios: um é a montagem da página. O outro é a restauração da sua página e execução.

Desta forma que você está recuperando o valor você precisa que a variável que você informou no valor exista/tenha valor quando você clicar no botão, ou seja, tem que estar pelo menos na sessão. Por isto que quando você informa um valor literal funciona.

Bom, mas há uma forma mais fácil de se recuperar este valor:

String columnName = (String) facesContext.getExternalContext().getRequestParameterMap().get( "cod_prod" );

:okok: