我希望有人可以帮助我...我已经研究这个错误有一段时间了。
我收到“HTTP 状态 400 - 客户端发送的请求在语法上不正确”。提交 Spring 表单时出错。
该错误与我的 JSP spring 表单中的以下代码有关。
<form:input path="game_week_id"></form:input>
当我删除这行代码时,不会抛出错误(但当然我想从输入的表单值中设置 game_week_id
)。请注意,game_week_id
实际上并不是固定表的 id(主键),而只是我为该列指定的名称。该表的主键实际上是一个自动编号。
我想在由 Fixtures 类控制的固定装置表中插入一行(基于用户表单输入)。
我认为将 game_week_id
表单字段绑定(bind)回对象时出现问题(或者问题可能在于 game_week_id
与底层的绑定(bind))数据库列)。
任何方向或任何帮助将不胜感激(对我宽容! - 我知道这可能是我正在做的愚蠢的事情)
来 self 的 Controller 、Fixture 对象和 JSP 表单的代码显示如下:
//CONTROLLER
@RequestMapping(value="/addFixtures", method=RequestMethod.POST)
public ModelAndView registerFixture(@ModelAttribute Fixture fixture, Map<String, Object> map1, HttpServletRequest request1)
{
String message;
System.out.println("Adding fixture..");
ModelAndView modelAndView = new ModelAndView();
System.out.println("Fixture: Game Week ID " + fixture.getGame_week_id());
System.out.println("Fixture: Game ID " + fixture.getGame_id());
fixtureService.addFixture(fixture);
modelAndView.setViewName("addFixtures");
message = "Fixture successfully added";
modelAndView.addObject("message", message);
return modelAndView;
}
夹具类
@Entity
@Table(name = "fixtures")
public class Fixture implements java.io.Serializable {
private Integer id;
public Gameweek game_week_id;
private Integer game_id;
private PPTeam home_team;
private PPTeam away_team;
public Fixture(){
}
public Fixture(
Gameweek game_week_id,
Integer game_id,
PPTeam home_team, PPTeam away_team, PPTeam homeTeam) {
this.game_week_id = game_week_id;
this.game_id = game_id;
this.home_team = home_team;
this.away_team = away_team;
}
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name ="game_week_id")
public Gameweek getGame_week_id() {
return game_week_id;
}
public void setGame_week_id(Gameweek game_week_id) {
this.game_week_id = game_week_id;
}
public void setGame_week_id_int(Integer game_week_id_int) {
this.game_week_id = game_week_id;
}
public Integer getGame_id() {
return game_id;
}
public void setGame_id(Integer game_id) {
this.game_id = game_id;
}
@ManyToOne
@JoinColumn(name = "home_team", referencedColumnName = "teamId")
public PPTeam getHome_team() {
return this.home_team;
}
public void setHome_team(PPTeam home_team) {
this.home_team = home_team;
}
@ManyToOne
@JoinColumn(name = "away_team", referencedColumnName = "teamId")
public PPTeam getAway_team() {
return this.away_team;
}
public void setAway_team(PPTeam away_team) {
this.away_team = away_team;
}
@Override
public String toString() {
return "Fixture [id=" + id + ", game_week_id=" + game_week_id
+ ", game_id=" + game_id + ", home_team=" + home_team
+ ", away_team=" + away_team + "]";
}
}
最后是我的 JSP 表单
<form:form method="POST" commandName="fixture" action="${pageContext.request.contextPath}/team/addFixtures">
<table>
<tr>
<td>Gameweek Number:</td>
<td>
<form:input path="game_week_id"></form:input>
</td>
</tr>
<tr>
<td>Game No:</td>
<td>
<form:input path="game_id"></form:input>
</td>
</tr>
</table>
<br>
<input type="submit" value ="Add Fixture">
</form:form>
最佳答案
您的 GameWeek 类(class)是什么?我认为问题是您尝试将 text-field
绑定(bind)到对象 GameWeek
。当您使用 game_week_id
发送请求时,它在 Spring 模型映射中是 string
,Spring 无法从 string
生成 GameWeek
对象>.
关于java - HTTP 状态 400 - 客户端发送的请求在语法上不正确。 - 在使用 Hibernate 的 Spring MVC Web 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130564/