Error in register "Do not recognize the property"

1

I'm studying Java EE and I came across a bug, if anyone knows the answer I appreciate it. I have my form:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core">



    <h:form>
       <div>
           <h:outputLabel value="Título"/>
           <h:inputText value="#{adminLivrosBean.Livro.titulo}"/>
       </div>  
       <div>
           <h:outputLabel value="Descrição"/>
           <h:inputTextarea rows="4" cols="20" value="#{adminLivrosBean.livro.descricao}"/>
       </div>    
        <div>
           <h:outputLabel value="Número Páginas"/>
           <h:inputText value="#{adminLivrosBean.Livro.numeroPaginas}"/>
       </div>    
        <div>
           <h:outputLabel value="Preço"/>
           <h:inputText value="#{adminLivrosBean.Livro.preco}"/>
       </div>  

       <h:commandButton value="Cadastrar" action="#{adminLivrosBean.salvar}"/>

    </h:form>



</html>

I have Bean:

package br.com.casadocodigo.loja.beans;

import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;
import javax.inject.Named;
import br.com.casadocodigo.loja.models.Livro;

//CDI
@Named
@RequestScoped
@ManagedBean(name="adminLivrosBean")
public class AdminLivrosBean {

    private Livro livro = new Livro();


    public void salvar(){

        System.out.println("Livro Cadastrado:" + livro);

    }


    public Livro getLivro() {
        return livro;
    }


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

    
asked by anonymous 14.09.2017 / 07:14

3 answers

1

14.09.2017 / 14:34
1

Java is case sensitive , that is, it differs between uppercase and lowercase.

Change all XHTML references from Livro to livro and it will work:

From:

<h:form>
   <div>
       <h:outputLabel value="Título"/>
       <h:inputText value="#{adminLivrosBean.Livro.titulo}"/>
   </div>  
   <div>
       <h:outputLabel value="Descrição"/>
       <h:inputTextarea rows="4" cols="20" value="#{adminLivrosBean.livro.descricao}"/>
   </div>    
    <div>
       <h:outputLabel value="Número Páginas"/>
       <h:inputText value="#{adminLivrosBean.Livro.numeroPaginas}"/>
   </div>    
    <div>
       <h:outputLabel value="Preço"/>
       <h:inputText value="#{adminLivrosBean.Livro.preco}"/>
   </div>  

   <h:commandButton value="Cadastrar" action="#{adminLivrosBean.salvar}"/>

</h:form>

To:

<h:form>
   <div>
       <h:outputLabel value="Título"/>
       <h:inputText value="#{adminLivrosBean.livro.titulo}"/>
   </div>  
   <div>
       <h:outputLabel value="Descrição"/>
       <h:inputTextarea rows="4" cols="20" value="#{adminLivrosBean.livro.descricao}"/>
   </div>    
    <div>
       <h:outputLabel value="Número Páginas"/>
       <h:inputText value="#{adminLivrosBean.livro.numeroPaginas}"/>
   </div>    
    <div>
       <h:outputLabel value="Preço"/>
       <h:inputText value="#{adminLivrosBean.livro.preco}"/>
   </div>  

   <h:commandButton value="Cadastrar" action="#{adminLivrosBean.salvar}"/>

</h:form>
    
14.09.2017 / 14:27
0

Remember to follow the JavaBeans convention. If your bean has a book property, most frameworks will look for a getLibrary and bookSet method to retrieve and write data to this property. Swap Book in the template per book.

You can learn more about the javabeans standards this link that leads to an oracle document

    
14.09.2017 / 20:37