Problemas ao chamar metodo e passar parametro [JSF]

2 respostas
cs.santos0

Iai pessual,

Creio que minha duvida seja algo simples para muitos aki...porem sou novo com esse framework e estou tendo algumas dificuldades.

Tenho um jsp onde tenho um dataTable, a cada linha de registro que pego do banco, eu coloco um botão de remover. segue o codigo:

<rich:dataTable value='#{cardapioBean.pedidos}' var='pedido' border="1" cellpadding="2" cellspacing="0">                                                                                                  
                        <rich:column width="5%" style="text-align:center">
                            <f:facet name="header">
                                <h:outputText value="Cod" />
                            </f:facet>
                            <h:outputText value="#{pedido.id}">                              
                            </h:outputText>
                        </rich:column>   
                       <rich:column width="10%" style="text-align:center">
                            <f:facet name="header">
                                <h:outputText value="Data" />
                            </f:facet>
                            <h:outputText value="#{pedido.data}">
                                <f:convertDateTime dateStyle="medium"/>
                            </h:outputText>
                        </rich:column>                                 
                        <rich:column width="50%" style="text-align:left">
                            <f:facet name="header">
                                <h:outputText value="Produto" />
                            </f:facet>
                            <h:outputText value="#{pedido.produto.descricao}">
                                <f:convertNumber pattern="####.00 Kcal"/>
                            </h:outputText>
                        </rich:column>                                
                        <rich:column width="10%" style="text-align:center;color:#A52A2A;font-weight:bold">
                            <f:facet name="header">
                                <h:outputText value="Mesa" />
                            </f:facet>
                            <h:outputText  value="#{pedido.cliente.descricao}"/>                                                            
                        </rich:column>                                
                        <rich:column width="15%" style="text-align:center">
                            <f:facet name="header">
                                <h:outputText value="Pronto?" />
                            </f:facet>
                            <a4j:commandButton value="Marcar" action="cardapioBean.removerPedido">                                        
                                <a4j:actionparam value="#{pedido.id}"/>
                            </a4j:commandButton>    
                        </rich:column>                                
                    </rich:dataTable>

e o metodo removerPedido:

private DaoFactory factory;

public CardapioBean() {
        factory = new DaoFactory();         
    }

public String removerPedido(Long id){
        this.factory.beginTransaction();
        
        Pedido p = this.factory.getPedidoDao().procura(id);        
        p.setFlag(1);
        
        this.factory.getPedidoDao().atualiza(p);
        this.factory.commit();
        
        return null;
    }

porem quando executo isso, da erro....

javax.servlet.ServletException: #{cardapioBean.removerPedido}: javax.el.MethodNotFoundException: Method not found: [email removido]()
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)

oq não entendo, é como ele pode reclamar de não achar o metodo se o metodo existe no meu ManagedBean...

Alguem poderia me dar uma força

2 Respostas

L

vc deve ter um capo id no seu bean para fazer esta ligacao

private Integer id;

	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}

<a4j:actionparam value="#{pedido.id}"/>

seu metodo tem que estar assim:

public String removerPedido(){  
         this.factory.beginTransaction();  
           
         Pedido p = this.factory.getPedidoDao().procura(id);          
         p.setFlag(1);  
           
         this.factory.getPedidoDao().atualiza(p);  
         this.factory.commit();  
           
         return null;  
     }
L

A so lembrando seus metodos tem que ser

public String nomedometo(){

...
return ...
}
ou 
public void nomedoMetodo(ActionEvent e){

...

}
Criado 26 de maio de 2008
Ultima resposta 26 de mai. de 2008
Respostas 2
Participantes 2