1
resposta

Erro 500 http://cdc-react.herokuapp.com/api/autores

Segui o código conforme a aula. Porém está salvando e não está gerando listagem. Estou utilizando o link http://cdc-react.herokuapp.com/api/autores

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Feb 20 14:15:35 UTC 2018
There was an unexpected error (type=Internal Server Error, status=500).
Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.SQLGrammarException: Could not open connection
import React, { Component } from 'react';
import $ from 'jquery';
import InputCustomizado from './componentes/InputCustomizado';
import PubSub from 'pubsub-js';


class FormularioAutor extends Component{

  constructor(){
    super();
    this.state = {nome:'', email:'', senha:''};
    this.enviaForm = this.enviaForm.bind(this);
    this.setNome = this.setNome.bind(this);
    this.setEmail = this.setEmail.bind(this);
    this.setSenha = this.setSenha.bind(this);
 }

 enviaForm(evento){
    evento.preventDefault();
    console.log(this);
       $.ajax({
         url:"http://cdc-react.herokuapp.com/api/autores",
         contentType:'application/json',
         dataType: 'json',
         type:'post',
         data: JSON.stringify({nome:this.state.nome,email:this.state.email, senha:this.state.senha}),
         sucess: function(novaListagem){
          PubSub.publish('atualiza-lista-autores',novaListagem);
        },
        erro:function(resposta){
          console.log("erro");
        }

       });
   }

   setNome(evento){
     this.setState({nome:evento.target.value});
   }

   setEmail(evento){
     this.setState({email:evento.target.value});
   }

   setSenha(evento){
     this.setState({senha:evento.target.value});
   }


    render(){
        return(
            <div className="pure-form pure-form-aligned">
            <br></br>
             <form className="pure-form pure-form-aligned" onSubmit={this.enviaForm} method="post">
            <InputCustomizado id="nome" type="text" name="nome" value={this.state.nome} onChange={this.setNome} label="Nome"/>                                              
            <InputCustomizado id="email" type="email" name="email" value={this.state.email} onChange={this.setEmail} label="Email"/>                                              
            <InputCustomizado id="senha" type="password" name="senha" value={this.state.senha} onChange={this.setSenha} label="Senha"/>                                                   <div className="pure-control-group">                                  
              <label></label>
              <button type="submit" className="pure-button pure-button-primary">Gravar</button>                                    
            </div>
          </form>
          </div>  
        );
    }
}

class TabelaAutores extends Component{


      render(){
     return(
        <div>            
        <br></br>
          <table className="pure-table">
            <thead>
              <tr>
                <th>Nome</th>
                <th>email</th>
              </tr>
            </thead>
            <tbody>
                {
                  this.props.lista.map(function(autor){
                    return (
                      <tr key={autor.id}>
                        <td>{autor.nome}</td>
                        <td>{autor.email}</td>
                      </tr>
                      );
                  })
                }
              </tbody>
          </table> 
        </div>             


     );
   }
}

export default class AutorBox extends Component{

      constructor(){
        super();
        this.state = {lista : []};
    }

    componentWillMount(){
        $.ajax({
          url:"http://cdc-react.herokuapp.com/api/autores",
          dataType: 'json',
          success:function(resposta){
            this.setState({lista:resposta});
          }.bind(this)
        }
    );

    PubSub.subscribe('atualiza-lista-autores', function(topico,novaLista){
      this.setState({lista:novaLista});
    }.bind(this));
}

render() {
      return(
        <div>
          <FormularioAutor/>
          <TabelaAutores lista={this.state.lista}/>
        </div>
      );
    } 
  }
1 resposta

Oi Nicolle, tudo bem? Erro 500 é no geral alguma coisa que deu errado no servidor e não no seu código, tá bem? Acho que algo aconteceu no Heroku e a API ficou indisponível por algum tempo, mas acabei de acessar e deu tudo certo. Tenta novamente por favor?