0
I’m struggling with something that seems simple to solve, but I’ve already wasted considerable time on it, and I hope someone can help me.. , good. , in my View I use to call a method before rendering the screen pro user, but it presents the following message directed to
Method must have signature "void method(ComponentSystemEvent)" but has signature "void method()"
I already switched the jsf dependency to a lower version but still has the same problem(current version is 2.2.8), added the argument ComponentSystemEvent event
in the method but not solved, follows the screen and the 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>