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>
);
}
}