Я хочу создать веб-приложение, в котором вводимые пользователем данные сохраняются в базе данных. Я использую Java и React для пользовательского интерфейса, но продолжаю получать ошибку 404.
У меня есть следующие скрипты:
Реагировать:
addCreditCard(event) {
var that = this;
event.preventDefault();
let card_data = {
cardholder : this.refs.cardholder.value,
cardnumber : this.refs.cardnumber.value,
card_identifier : (this.refs.cardnumber.value).substr(15),
expiration : this.refs.expiration.value,
cvc : this.refs.cvc.value
};
console.info('Ez itt: ' + JSON.stringify(card_data))
const request = {
method: 'post',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: JSON.stringify(card_data)
}
let creditcards = that.state.creditcards;
creditcards.push(card_data);
that.setState({
creditcards : creditcards
})
console.info(creditcards)
fetch('/api/new-card', request)
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Something went wrong ...');
}
})
.then(data => this.setState({ creditcards: data.creditcards }))
.catch(error => this.setState({ error }))
}
Ява
@Path("")
@Produces(ExtendedMediaType.APPLICATION_JSON_UTF8)
@Consumes(ExtendedMediaType.APPLICATION_JSON_UTF8)
public class CreditCardRest {
/**
* Injected configurationDao.
*/
@Inject
@Named(SessionFactoryProducer.SQL_SESSION_FACTORY)
private CardDAO cardDAO;
@RequestMapping(value = "/new-card", method = RequestMethod.POST)
@Transactional
public Response.ResponseBuilder saveCreditCardData(@PathParam("cardholder") final String cardholder,
@PathParam("cardnumber") final Integer cardnumber,
@PathParam("expiration") final String expiration,
@PathParam("cvc") final Integer cvc,
@PathParam("card_identifier") final Integer card_identifier,
@Context HttpServletResponse servletResponse) throws Exception {
Reader reader = Resources.getResourceAsReader("mybatis-card-service.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
//Create a credit card object
cardDAO.saveCreditCardData(cardholder, cardnumber, expiration, cvc, card_identifier);
System.out.println("record inserted successfully");
session.commit();
session.close();
return Response.status(200);
}
}
Код JS работает, проблема где-то в связи между Java-классом и Ract ... Извините, но я не могу понять ... Конечно, это всего лишь часть всего кода, но я надеюсь, что это может быть очевидно для кого-то уже с первого взгляда ... Большое спасибо!
Спасибо...




Пути /api нет. Ваш путь к конечной точке /new-card - /new-card, потому что на уровне class нет корневого пути.
@Path("/api")
@Produces(ExtendedMediaType.APPLICATION_JSON_UTF8)
@Consumes(ExtendedMediaType.APPLICATION_JSON_UTF8)
public class CreditCardRest {
}
можете ли вы добавить класс ApplicationConfig
@dorcsi в вашем коде реакции попробуйте 'Content-Type': 'application/json;charset=UTF-8'
путь / api определен в другом классе ApplicationConfig .. Я уже пробовал, как вы сказали, но результат тот же.