【发布时间】:2013-11-30 05:56:25
【问题描述】:
这是我在 StackOverflow 上的第一篇文章。对不起我的英语不好。我在 Spring MVC 和 Hibernate 项目中添加员工时遇到问题。我在tomcat 7.047上运行它。我认为问题出在 JSP 或 Hibernate 数据库映射上。当我以同样的方式添加一个部门时。 数据库中的 Oddzial 和 Pracownik 关系: Oddzial [or Department in English] 1 : n Pracownik[Employee]
错误输出:
HTTP 状态 400 -
输入状态报告 信息 描述客户端发送的请求语法错误。
我的员工 [Pracownik] 类:
@Entity
@Table(name = "pracownicy")
@Inheritance(strategy=InheritanceType.JOINED)
public class Pracownik implements Serializable {
private static final long serialVersionUID = -2556993070168215685L;
@Id
@GeneratedValue
private Integer pracownik_id;
@ManyToOne(cascade = {CascadeType.MERGE})
@JoinColumn(name="oddzial_id", nullable = false)
private Oddzial oddzial_id;
private String imie;
private String nazwisko;
private String adres_zamieszkania;
private String miasto;
@Column(columnDefinition = "enum('Pelny','Pol')")
@Enumerated(EnumType.STRING)
private Etat etat;
private String stanowisko;
private Double pensja;
@ManyToOne(cascade = {CascadeType.MERGE})
@JoinColumn(name="kierownik_id", nullable = true)
private Pracownik kierownik_id;
//getters and setters generated by eclipse
}
我奇怪的[部门]班级:
@Entity
@Table(name="oddzial")
public class Oddzial implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer oddzial_id;
private String miasto;
private String ulica;
//getters and setters generated by eclipse
}
我的员工控制器
@Controller
@RequestMapping(value="/pracownik")
public class PracownikController {
@Autowired
private PracownikService pracownikService;
@Autowired
private OddzialService oddzialService;
@RequestMapping(value="/add", method=RequestMethod.GET)
public ModelAndView addPracownikPage() {
List<Oddzial> oddzialList = oddzialService.getOddzialy();
ModelAndView modelAndView = new ModelAndView("add-pracownik-form");
modelAndView.addObject("pracownik", new Pracownik());
modelAndView.addObject("oddzialy", oddzialList);
return modelAndView;
}
@RequestMapping(value="/add", method=RequestMethod.POST)
public ModelAndView addingPracownik(@ModelAttribute Pracownik pracownik, HttpServletRequest request) {
ModelAndView modelAndView = new ModelAndView("home");
pracownikService.addPracownik(pracownik);
String message = "Pracownik was successfully added.";
System.out.println(message);
modelAndView.addObject("message", message);
return modelAndView;
}
我的 JSP - 员工表单的加法器: 我用过,还是一样。
<form:form method="POST" commandName="pracownik" action="${pageContext.request.contextPath}/pracownik/add.html">
<table>
<tbody>
<tr>
<td>Oddzial ID:</td>
<td><form:radiobuttons path="oddzial_id" items='${oddzialy}'/></td>
</tr>
<tr>
<td>Imię:</td>
<td><form:input path="imie" /></td>
</tr>
<tr>
<td>Nazwisko:</td>
<td><form:input path="nazwisko" /></td>
</tr>
<tr>
<td>Pensja:</td>
<td><form:input path="pensja" /></td>
</tr>
<tr>
<td>Stanowisko:</td>
<td><form:input path="stanowisko" /></td>
</tr>
<tr>
<td>Adres:</td>
<td><form:input path="adres_zamieszkania" /></td>
</tr>
<tr>
<td><input type="submit" value="Add" /></td>
<td></td>
</tr>
</tbody>
</table>
</form:form>
如果您需要更多信息,请写信。 提前感谢您的帮助。
Oddzial 和 adres_Zamieszkania 的获取器和设置器。
public Oddzial getOddzial_id() {
return oddzial_id;
}
public void setOddzial_id(Oddzial oddzial_id) {
this.oddzial_id = oddzial_id;
}
public String getAdres_zamieszkania() {
return adres_zamieszkania;
}
public void setAdres_zamieszkania(String adres_zamieszkania) {
this.adres_zamieszkania = adres_zamieszkania;
}
【问题讨论】:
-
问题与映射等无关。这意味着随请求发送的数据无法转换为处理程序方法期望的任何内容。我认为罪魁祸首是 addingPracownik?在这种情况下,请检查您的请求负载是否可以转换为 Pracownik 实例。
-
当我点击提交时,AddingPracownik 方法甚至没有启动。
-
显示
adres_zamieszkania和oddzial_id的getter。 -
public String getAdres_zamieszkania() { return adres_zamieszkania;} public void setAdres_zamieszkania(String adres_zamieszkania) { this.adres_zamieszkania = adres_zamieszkania; } public Oddzial getOddzial_id() { return oddzial_id; } 公共无效 setOddzial_id(Oddzial 奇数_id) { this.oddzial_id = 奇数_id; }
-
您可以编辑您的问题并将其添加到那里。
标签: java spring hibernate spring-mvc