2015-08-30 6 views
4

У меня возникла проблема, когда я создаю проект Spring + Spring MVC + Hibernate + MySQL.HTTP Status 400 - Обязательный Целочисленный параметр 'id' отсутствует

Все работает нормально, но когда я получаю «editpage», а затем хочет разместить редактирования информации в MySQL, я получаю следующее сообщение об ошибке от моего сервера Tomcat:

HTTP Status 400 - Required Integer parameter 'id' is not present 

класса контроллера

@RequestMapping(value = "https://stackoverflow.com/users/edit", method = RequestMethod.POST) 
public String saveEdit(@ModelAttribute("userAttribute") User user, 
         @RequestParam(value = "id", required = 
true)Integer id, Model model){ 

    logger.debug("Received request to update person"); 

    user.setId(id); 

    personService.edit(user); 

    model.addAttribute("id", id); 

    return "editedpage"; 
} 

Услуги класс

public void edit(User user){ 

    logger.debug("Editing existing user"); 

    Session session = sessionFactory.getCurrentSession(); 

    User existingUser = (User) session.get(User.class, user.getId()); 

    existingUser.setLogin(user.getLogin()); 
    existingUser.setPassword(user.getPassword()); 
    existingUser.setReal_name(user.getReal_name()); 

    session.save(existingUser); 
} 

Моя страница JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html lang="en"> 

<head> 
<!-- Bootstrap core CSS --> 
<link href="<c:url value="/resources/styles/bootstrap.min.css" />"   
rel="stylesheet"> 
<script src="<c:url value="../../resources/javascripts 
/non-empty_validation_editpage.js"/>"></script> 

<title>Editing page</title> 

</head> 

<body> 

<h1 style="text-align: center">Edit page</h1> 

<c:url var="saveUrl" value="/main/users/edit?id = ${userAttribute.id}"/> 
<form:form modelAttribute = "userAttribute" method = "POST" action = 
"${saveUrl}"> 

<div style="width: 300px; height: 500px; margin: auto;"> 

<div class="form-group" > 
<form:label path = "id">id:</form:label> 
<form:input type = "id" name = "id" path = "id" disabled="true" 
class="form-control" /> 

</div> 

<div class="form-group"> 
    <form:label path = "login">Login</form:label> 
    <form:input type = "login" name = "login" path = "login" class="form- 
control" placeholder="new login"/> 

</div> 

<div class="form-group"> 
<form:label path = "password">Password</form:label> 
<form:input type = "password" name = "password" path = "password" 
class="form-control" placeholder="new password"/> 

</div> 

<div class="form-group"> 
<form:label path = "real_name">Real name</form:label> 
<form:input type = "real_name" name = "real_name" path = "real_name" 
class = "form-control" placeholder = "new Real name"/> 

</div> 

<input type="submit" class="btn btn-success" value="Save" style="width: 
300px"/> 

</div> 

</form:form> 

</body> 
</html> 
+0

Трудно сказать, может быть, пробелы вокруг '=' здесь: 'edit? Id = $ {userAttribute.id}' ' ? – MirMasej

+0

спасибо, вы разрешаете мою проблему! –

ответ

0

Это обычно происходит, когда информация, которая требуется в методе [@RequestParam (значение = «ID», требуется =
истина) целочисленный идентификатор] в этом случае идентификатор не присутствует в качестве параметра запроса, когда U отправляют сохраненные данные. Попытка жесткого кодирования любого числа вместо @RequestParam (value = "id", required =
true) Целочисленный id, вы должны иметь возможность сохранять данные. Другой способ - изменить значение от true = true на false только для целей тестирования и посмотреть, не имеет значения

+0

Проблема решена с удалением пробелов вокруг = sign здесь: edit? Id = $ {userAttribute.id} ?. благодаря –

Смежные вопросы