6
respostas

Erro HTTP Status 500 - javax/servlet/jsp/jstl/sql/Result

Boa tarde pessoal, terminei esse curso e resolvei fazer mais algumas implementações pra treinar. Criei uma classe Editora pra se relacionar com Livro no mesmo esquema do Autor e Livro na pagina livro.xhtml, aparece um select one menu, seleciono a editora e relaciono com o livro e a editora é renderizada numa tabela a baixo (como do autor). Mas nao consigo localizar o erro. Se puderem me ajudar por favor.

Classe Editora

@Entity
public class Editora implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer editoraId;

    private String nomeFantasia;
    private String razaoSocial;
    private String cnpj;

    @OneToMany(mappedBy="editora", orphanRemoval=true)
    @Cascade(org.hibernate.annotations.CascadeType.ALL)
    private List<Livro> livros = new ArrayList<Livro>();

Classe Livro relacionada com a Editora

@Entity
public class Livro implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private Integer id;

    private String titulo;
    private String isbn;
    private double preco;
    @Temporal(TemporalType.DATE)
    private Calendar dataLancamento = Calendar.getInstance();
    @Lob
    private String descricao;
    @ManyToMany(fetch=FetchType.EAGER)
    private List<Autor> autores = new ArrayList<Autor>();
    @ManyToOne
    @JoinColumn(name="editora", nullable=true)
    @ForeignKey(name="fk_editora")
    private Editora editora = new Editora();

    public Editora getEditora() {
        return editora;
    }

    public void setEditora(Editora editora) {
        this.editora = editora;
    }

Arquivo XHTML (o código a baixo está dentro de um formulario) E, se eu tiro a dataTable funciona tudo... Mas qnd eu coloco pra renderizar, dá problema :/

            <!-- FIELDSET QUE ASSOCIA EDITORA COM LIVRO -->
            <fieldset>
                <legend>Dados da Editora</legend>
                <h:outputLabel value="Selecione a Editora: " for="editora" />
                <h:selectOneMenu value="#{livroBean.editoraId}" id="editora">
                    <f:selectItems value="#{livroBean.editoras}" var="editora"
                        itemLabel="#{editora.nomeFantasia}"
                        itemValue="#{editora.editoraId}" />
                </h:selectOneMenu>
                <h:commandButton value="Gravar" action="#{livroBean.gravaEditora}">
                    <f:ajax execute="editora" render="tabelaEditora" />
                </h:commandButton>

                <br />

                <!-- TABELA COM OPÇÕES DE REMOVER E EDITAR -->
                <h:dataTable value="#{livroBean.editorasDoLivro}" var="editora"
                    id="tabelaEditora">
                    <h:column>
                        <h:outputLabel value="#{editora.nomeFantasia}" />
                    </h:column>
                    <h:column>
                        <h:commandLink value="Remover Editora"
                            action="#{livroBean.removerEditoraDoLivro(editora)}" />
                    </h:column>
                </h:dataTable>
            </fieldset>
            <h:commandButton value="Gravar" action="#{livroBean.gravar}">
                <f:ajax execute="@form"
                    render="@form :formTabelaLivros:tabelaLivros" />
            </h:commandButton>
6 respostas

Fala ai Renan, de boa ?

Cara qual é o erro que está dando ?

Fala Matheus, tranquilo e voce? O erro que dá é esse Erro HTTP Status 500 - javax/servlet/jsp/jstl/sql/Result Acho que por foto ficaria mais facil, mas como n tem, vai assim mesmo kkkk

exception

javax.servlet.ServletException: javax/servlet/jsp/jstl/sql/Result
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/sql/Result
    javax.faces.component.UIData.getDataModel(UIData.java:1833)
    javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)
    javax.faces.component.UIData.setRowIndex(UIData.java:473)
    com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81)
    javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:865)
    javax.faces.component.UIData.encodeBegin(UIData.java:1133)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
    javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Renan,

Pelo erro parece que ele não encontrou essa classe, consegue confirmar que tem todas as dependencias ?

Sim man, adicionei nas configurações do faces-config.xml e tudo... Tabela criada no banco de dados, fiz as ligações... O problema é só na hora de renderizar a tabela :(

O erro que tá levando é : java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/sql/Result Parece que ele não está encontrando alguma classe

Onde mais posso olhar pra tentar encontar o erro, Matheus?