java - HTTP 状态 400 - 客户端发送的请求在语法上不正确。 - 在使用 Hibernate 的 Spring MVC Web 应用程序中

标签 java spring hibernate jsp spring-mvc

我希望有人可以帮助我...我已经研究这个错误有一段时间了。

我收到“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/

相关文章:

java - 验证带小数的值是否在定义范围内的最佳方法是什么

java - 如何在json post请求中发送字节数组?

java反射superClass被hibernate加载的问题

java - 使用原生SQL查询时如何指定数据类型?

hibernate - javax.validation : Receive an error 'No validator could be found for type:'

java - React Native android 0.19.0 如何添加节点模块依赖项?

java - 当用户在特定区域时如何发送 toast ?

java - Spring PUT 请求 : Unsupported Media Type (Code: 415)

java - 在 session 中存储大量数据 - 我应该这样做吗?

java - 为什么SpringApplication启动后不立即终止?