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

Caused by: javax.el.MethodNotFoundException: /ring.xhtml @20,157 action="#{livroBean.livro}": Method not found: [email protected]()

<h:form id="ringForm">
                <p:ring id="basic" value="#{livroBean.livros}" var="livro">
                    <p:outputPanel style="text-align: center;" layout="block">
                        #{livro.titulo}
                    </p:outputPanel>
                    <br />
                    <p:commandButton update=":ringForm:livroDetail" icon="ui-icon-search" title="View" oncomplete="PF('livroDialog').show();" action="#{livroBean.livro}"/>
                </p:ring>
                <p:dialog id="livroDialog" header="Informações do Livro" widgetVar="livroDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false" width="300">
                     <p:outputPanel id="livroDetail" style="text-align:center" layout="block">
                        <p:panelGrid  columns="2" rendered="#{not empty livroBean.livro}" columnClasses="value"  style="width:100%;">
                            <f:facet name="header">
                                #{livroBean.livro.titulo} 
                            </f:facet>

                            <h:outputText value="Preço" />
                            <h:outputText value="#{livroBean.livro.preco}" />

                            <h:outputText value="ISBN" />
                            <h:outputText value="#{livroBean.livro.isbn}" />
                        </p:panelGrid>
                    </p:outputPanel>
                </p:dialog>
            </h:form>
package br.com.caelum.livraria.bean;

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

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

import br.com.caelum.livraria.dao.DAO;
import br.com.caelum.livraria.modelo.Autor;
import br.com.caelum.livraria.modelo.Livro;
import br.com.caelum.livraria.util.RedirectView;

@ManagedBean
@ViewScoped
public class LivroBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private Livro livro = new Livro();

    private Integer autorId;

    private List<Livro> livros;

    public Livro getLivro() {
        return livro;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }

    public void setAutorId(Integer autorId) {
        this.autorId = autorId;
    }

    public Integer getAutorId() {
        return autorId;
    }

    public List<Autor> getAutores(){
        return new DAO<Autor>(Autor.class).listaTodos();
    }

    public List<Autor> getAutoresDoLivro(){
        return this.livro.getAutores();
    }

    public List<Livro> getLivros(){
        if(this.livros == null) {
            this.livros = new DAO<Livro>(Livro.class).listaTodos();
        }
        return this.livros;
    }

    public void gravarAutor() {
        Autor autor = new DAO<Autor>(Autor.class).buscaPorId(this.autorId);
        this.livro.adicionaAutor(autor);
    }

    public RedirectView autorForm() {
        return new RedirectView("autor");
    }

    public void gravar() {
        System.out.println("Gravando livro " + this.livro.getTitulo());

        if (livro.getAutores().isEmpty()) {
            FacesContext.getCurrentInstance().addMessage("autor", new FacesMessage("O livro precisa de um autor, "
                    + "a não ser que foi escrito pelo gasparzinho"));
            return;
        }

        if(this.livro.getId()==null) {
            new DAO<Livro>(Livro.class).adiciona(this.livro);
            this.livros = new DAO<Livro>(Livro.class).listaTodos();
        }else {
            new DAO<Livro>(Livro.class).atualiza(this.livro);
        }

        this.livro = new Livro();
    }

    public void remove(Livro livro) {
        new DAO<Livro>(Livro.class).remove(livro);
        this.livros = new DAO<Livro>(Livro.class).listaTodos();
    }

    public void removeAutor(Autor autor) {
        this.livro.removeAutor(autor);
    }

    public void carrega(Livro livro) {
        this.livro = livro;
    }

    public void carregaPeloId() {
        Integer id = this.livro.getId();
        this.livro = new DAO<Livro>(Livro.class).buscaPorId(id);
        if(this.livro == null) {
            this.livro = new Livro();
        }
    }

    public void comecaComDigitoUm(FacesContext facesContext,UIComponent uiComponent, Object valor) {
        if(!valor.toString().startsWith("1")) {
            throw new ValidatorException(new FacesMessage("O ISBN só pode começar com 1, vc (Faustão: -EROUUUU"));
        }
    }

}
1 resposta
solução!

Formatei a máquina e agora tá funcionando, devia ser algum hacker xD