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

f:setPropertyActionListener

Oi pessoal!

É o seguinte, estou tentando aplicar o f:setPropertyActionListener no carrega autor porém estou recebendo a seguinte exception:

javax.servlet.ServletException: /autor.xhtml @ 32,83 target = "# {autorBean.autor}": Propriedade 'autor' não gravável no tipo br.com.caelum.livraria.bean.AutorBean javax.faces.webapp.FacesServlet.service (FacesServlet.java:606) org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52)


Alem disso, quando eu apenas comento o comandLink anterior ele continua lendo o mesmo normalmente, e quando eu removo da a exeption acima.

segue codigo:

<?xml version="1.0" encoding="UTF-8" ?>
<!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"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:composition template="_template.xhtml">

        <ui:define name="titulo">Novo Autor</ui:define>
        <ui:define name="conteudo">
            <h:form>
                <fieldset>
                    <legend>Dados do Autor</legend>
                    <h:panelGrid columns="2">
                        <h:outputLabel value="Nome:" for="nome" />
                        <h:inputText id="nome" value="#{autorBean.autor.nome}" />
                        <h:commandButton value="Gravar" action="#{autorBean.gravar}" />
                    </h:panelGrid>
                </fieldset>
            </h:form>
            <h:form id="listaDeAutores">
                <h:dataTable id="listaDeAutores" value="#{autorBean.autores}" var="autor">
                    <h:column>
                        <f:facet name="header">Nome do autor</f:facet>
                        <h:outputText value="#{autor.nome}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">Altera autor</f:facet>
                        <h:commandLink value="atualizar">
<!--                         <h:commandLink value="atualizar" action="#{autorBean.carrega(autor)}"/> -->
                            <f:setPropertyActionListener value="#{autor}" target="#{autorBean.autor}"/>
                        </h:commandLink>
                    </h:column>
                    <h:column>
                        <f:facet name="header">Remove autor</f:facet>
                        <h:commandLink value="remover" action="#{autorBean.remover(autor)}"/>
                    </h:column>
                </h:dataTable>
            </h:form>
        </ui:define>
        <ui:define name="rodape">Cadastro autor</ui:define>
    </ui:composition>

</html>
2 respostas
solução!

Oi Lucas,

Esse erro de Não gravável é porque no seu managedBean o atributo autor deve estar sem o método set.

Confira então na sua classe AutorBean se tem o get e set do atributo autor.

Oi Rodrigo,

É isso mesmo, desculpa a lerdeza e obrigado.