Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

javax.el.PropertyNotFoundException: Property 'salvar' not found on type br.unemat.digera.beans.AdminProdutosBean$Proxy$_$$_WeldClientProxy

Boa noite, Eu criei um sistema baseado nas aulas do curso "VRaptor e JPA: Pratique Java com um sistema completo", e estou seguindo as aulas de Java EE para aprender a relacionar os bancos de dados. Porem, estou tendo alguns problemas para criar o metodo Bean. Apareceu o seguinte erro:

root cause

javax.el.PropertyNotFoundException: Property 'salvar' not found on type br.unemat.digera.beans.AdminProdutosBean$Proxy$_$$_WeldClientProxy
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:290)
    javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:243)
    javax.el.BeanELResolver.property(BeanELResolver.java:377)
    javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
    org.apache.el.parser.AstValue.getValue(AstValue.java:184)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:950)
    org.apache.jsp.WEB_002dINF.jsp.produto.form_jsp._jspService(form_jsp.java:218)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache

Segue meu Bean e meu Form.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib tagdir="/WEB-INF/tags" prefix="erro"%>

<%@ include file="/WEB-INF/jsp/header.jsp"%>
<%@ include file="/WEB-INF/jsp/dropmenu.jsp"%>

<form method="post" action="${adminProdutosBean.salvar}">
    <div class="form-group row">
        <label class="col-xs-2 col-form-label" for="nome">Nome:</label>
        <div class="col-xs-12">
            <input type="text" name="produto.nome" id="nome" class="form-control"
                value="${adminProdutosBean.produto.nome}" />
        </div>
    </div>
    <erro:validationMessage name="produto.nome" />

    <div class="form-group row">
        <label class="col-xs-2 col-form-label" for="descricao">Descricao:</label>
        <div class="col-xs-12">
            <input type="text" name="produto.descricao" id="descricao"
                class="form-control" value="${adminProdutosBean.produto.descricao}" />
        </div>
    </div>
    <erro:validationMessage name="produto.descricao" />

    <div class="form-group row">
        <label class="col-xs-2 col-form-label" for="preco">Preço:</label>
        <div class="col-xs-12">
            <input type="text" id="preco" class="form-control"
                name="produto.preco" value="${adminProdutosBean.produto.preco}" />
        </div>
    </div>
    <erro:validationMessage name="produto.preco" />

<!--    <div class="form-group">
        <label for="lista">Usuario:</label> <select name="lista" class="form-control"
            id="lista">
            <c:forEach items="${produtos.usuarios}" var="usuario">
                <option value="${usuario.nome}"></option>
            </c:forEach>
        </select>
    </div> -->

    <button type="submit" class="btn btn-success" value="Cadastrar"
        class="btn">Cadastrar</button>
</form>

<%@ include file="/WEB-INF/jsp/footer.jsp"%>
package br.unemat.digera.beans;

import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

import br.unemat.digera.modelos.Produto;

@Named
@RequestScoped
public class AdminProdutosBean {

    private Produto produto;

    public void salvar(){
        System.out.println("Produto cadastrado: " + produto);
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

}
1 resposta
solução!

Olá Victor,

A mensagem de erro indica que o framework que você está utilizando está considerando salvar como um atributo, porém sua classe não possui o atributo salvar.

Acredito que talvez colocar um par de parênteses no final faça o framework considera-lo um método.

<form method="post" action="${adminProdutosBean.salvar()}">

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software