1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro ao utilizar <f:event/>

Estou tendo dificuldades com algo que parece ser simples de resolver, mas já perdi um tempo considerável nisso, espero que alguém possa me ajudar.., bom.., na minha View utilizo o pra chamar um método antes de renderizar a tela pro usuário, mas apresenta a seguinte mensagem direcionada ao

Method must have signature "void method(ComponentSystemEvent)" but has signature "void method()"

já troquei a dependência do jsf pra uma versão inferior mas continua com o mesmo problema(versão atual é 2.2.8), adicionei o argumento "ComponentSystemEvent event" no método mas não resolveu, segue a tela e a Bean..

package com.mwcc.pedidovenda.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.validation.constraints.NotNull;

import com.mwcc.pedidovenda.model.Categoria;
import com.mwcc.pedidovenda.model.Produto;
import com.mwcc.pedidovenda.repository.CategoriaRepository;
import com.mwcc.pedidovenda.service.CadastroProdutoService;
import com.mwcc.pedidovenda.util.jsf.FacesUtil;

@Named
@ViewScoped
public class CadastroProdutoBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Inject
    private CategoriaRepository categorias;

    @Inject
    private CadastroProdutoService cadastroProdutoService;

    private Produto produto;

    private Categoria categoriaPai;

    private List<Categoria> categoriasRaizes;
    private List<Categoria> subcategorias;

    public CadastroProdutoBean() {
        limpar();
    }

    public void salvar() {
        this.produto = cadastroProdutoService.salvar(this.produto);
        limpar();

        FacesUtil.addInfoMessage("Produto salvo com suceso!");
    }

    public void inicializar() {
        if (FacesUtil.isNotPostback()) {
            categoriasRaizes = categorias.raizes();

            if (this.categoriaPai != null) {
                carregarSubcategorias();
            }
        }

    }

    public void carregarSubcategorias() {
        subcategorias = categorias.subcategorias(categoriaPai);
    }

    private void limpar() {
        this.produto = new Produto();
        this.categoriaPai = new Categoria();
        this.subcategorias = new ArrayList<>();
        this.categoriasRaizes = new ArrayList<>();
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {

        this.produto = produto;
        if (this.produto != null) {
            this.categoriaPai = this.produto.getCategoria().getCategoriaPai();
        }

    }

    public List<Categoria> getCategoriasRaizes() {
        return categoriasRaizes;
    }

    public List<Categoria> getSubcategorias() {
        return subcategorias;
    }

    @NotNull
    public Categoria getCategoriaPai() {
        return categoriaPai;
    }

    public void setCategoriaPai(Categoria categoriaPai) {
        this.categoriaPai = categoriaPai;
    }

}
<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:o="http://omnifaces.org/ui">

    <ui:define name="titulo">Novo produto</ui:define>

    <ui:define name="corpo">
        <f:metadata>
            <o:viewParam name="produto" value="#{cadastroProdutoBean.produto}" />
            <f:event listener="#{cadastroProdutoBean.inicializar}" type="PreRenderView"></f:event>
        </f:metadata>

        <h:form>
            <h1>Novo produto</h1>

            <p:messages autoUpdate="true" closable="true" />

            <p:toolbar style="margin-top: 20px">
                <p:toolbarGroup>
                    <p:button value="Novo" outcome="/produtos/CadastroProduto" />
                    <p:commandButton value="Salvar" id="botaoSalvar"
                        action="#{cadastroProdutoBean.salvar}" update="@form" />
                </p:toolbarGroup>

                <p:toolbarGroup align="right">
                    <p:button value="Pesquisa" outcome="/produtos/PesquisaProdutos" />
                </p:toolbarGroup>
            </p:toolbar>

            <p:panelGrid columns="2" id="painel"
                style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo">
                <p:outputLabel value="SKU" for="sku" />
                <p:inputText id="sku" size="20" maxlength="20"
                    value="#{cadastroProdutoBean.produto.sku}" />

                <p:outputLabel value="Nome" for="nome" />
                <p:inputText id="nome" size="60" maxlength="80"
                    value="#{cadastroProdutoBean.produto.nome}" />

                <p:outputLabel value="Categoria" for="categoria" />
                <p:selectOneMenu id="categoria"
                    value="#{cadastroProdutoBean.categoriaPai}">
                    <f:selectItem itemLabel="Selecione a categoria" />
                    <f:selectItems var="categoria"
                        value="#{cadastroProdutoBean.categoriasRaizes}"
                        itemLabel="#{categoria.descricao}" itemValue="#{categoria}" />
                    <p:ajax listener="#{cadastroProdutoBean.carregarSubcategorias}"
                        update="subCategoria" />
                </p:selectOneMenu>

                <p:outputLabel value="Subcategoria" for="subCategoria" />
                <p:selectOneMenu id="subCategoria"
                    value="#{cadastroProdutoBean.produto.categoria}">
                    <f:selectItem itemLabel="Selecione a subcategoria" />
                    <f:selectItems var="subcategoria"
                        value="#{cadastroProdutoBean.subcategorias}"
                        itemLabel="#{subcategoria.descricao}" itemValue="#{subcategoria}" />
                </p:selectOneMenu>

                <p:outputLabel value="Valor unitário" for="valUnitario" />
                <p:inputText id="valUnitario" size="10" maxlength="10"
                    styleClass="moeda"
                    value="#{cadastroProdutoBean.produto.valorUnitario}">
                    <f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
                </p:inputText>

                <p:outputLabel value="Estoque" for="estoque" />
                <p:inputText id="estoque"
                    value="#{cadastroProdutoBean.produto.quantidadeEstoque}" size="10"
                    maxlength="5" />
            </p:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf ou faça a sua própria pergunta.