Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

erro value="": Illegal Syntax for Set Operation

Boa Tarde, Estou fazendo o curso de JSF, porem estou com dificuldades para conseguir fazer funcionar. Quando tento Cadastrar um Livro utilizando o metodo gravar aparesenta o erro: value="": Illegal Syntax for Set Operation

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">

<h:body>
    <h1>Novo Livro</h1>

    <h:form>
        <fieldSet>
            <legend>Dados do Livro</legend>
            <h:panelGrid columns="2">
                <h:outputLabel value="Titulo: " for="titulo" />
                <h:inputText id="titulo" value="" />

                <h:outputLabel value="ISBN: " for="isbn" />
                <h:inputText id="isbn" value="" />

                <h:outputLabel value="Preço: " for="preco" />
                <h:inputText id="preco" value="" />

                <h:outputLabel value="Data de Lancamento: " for="dataLancamento" />
                <h:inputText id="dataLancamento" value="" />

                <h:commandButton value="Gravar" action="#{livroBean.gravar}" />
            </h:panelGrid>
        </fieldSet>
    </h:form>
</h:body>
</html>
package br.com.jsf.livraria.bean;

import javax.faces.bean.ManagedBean;

@ManagedBean(name="livroBean")
public class LivroBean {


    public void gravar(){

        System.out.println("Gravando Livro");

    }
}
4 respostas
solução!

Boa tarde,

o erro ocorre porque faltou especificar o valor na propriedade value nos seus <h:inputText>.

O parser do JSF reclama que não consegue entender a expressão "".

Você deveria ter uma instância de Livro no seu ManagedBean para poder utilizar nos seus inputs. Exemplo:

public class LivroBean {

    private Livro livro;

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

Assim você poderia referenciar no xhtml da seginte forma:

 <h:inputText id="titulo" value="#{livroBean.livro.titulo}" />

Eduardo

nesse momento do curso, retire por um instante os value="" e tente gravar novamente

Ah, o que o Alex falou esta ok mas você só vai ser isso no curso mais adiante, o professor vai explicar nas próximas aulas. Mas por enquanto, veja na transcrição da aula, não tem o value.

Obrigado, Alex Carvalho e Jefferson Ribeiro de Medeiros.

Fiz essas alterações e deram certo.

Grato pela ajuda.

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