【问题标题】:Spring mvc http 400 error on submitSpring mvc http 400 提交时出错
【发布时间】:2016-01-07 17:14:45
【问题描述】:

每当我想保存我的实体时,它都会抛出此错误:Http 400 错误,“客户端发送的请求在语法上不正确。”
编辑.jsp:

   <f:form action = "update.html" modelAttribute="Dolgozo">
        <input type="hidden" name = "id" value="${d.dolgozoId}">
        <label for="nev">Név: </label>
        <input type="text" name = "nev" value="${d.nev}">
           </br>
        <label for="szulido">Születési idő: </label>
        <input type="date" name = "szulido" value="${d.szulido}">
            </br>
        <label for="anyjaneve">Anyja neve: </label>
        <input type="text" name = "anyjaneve" value="${d.anyjaneve}">
            </br>
        <label for="telefonszam,">Telefonszám: </label>
        <input type="text" name = "telefonszam" value="${d.telefonszam}">
            </br>
        <label for="lakcim">Lakcím: </label>
        <input type="text" name = "lakcim" value="${d.lakcim}">
            </br>
        <input type="submit" value="Módosít">
    </f:form>

控制器:

@Controller
public class DolgozoController {

@RequestMapping(value = "index")
public ModelAndView redirect(){
    ModelAndView MV = new ModelAndView();
    MV.setView("index");
    return MV;
}

@RequestMapping(value = "getAll", method = RequestMethod.GET)
public String getAll(Model m){

    DolgozoModel model = new DolgozoModel();
    m.addAttribute("lst", model.getAll());

    return "data";

}

@RequestMapping(value = "edit", method = RequestMethod.GET)
public String edit(@RequestParam(value = "id") int id, Model m){
    java.math.BigDecimal bd = new  java.math.BigDecimal(String.valueOf(id));
    DolgozoModel model = new DolgozoModel();
    Dolgozo d = new Dolgozo();

    d = model.getDolgozo(bd);
    m.addAttribute("d", d );
    return "edit";

} 

@RequestMapping(value = "update", method = RequestMethod.POST)
public String update(@ModelAttribute(value = "Dolgozo")Dolgozo d){

    DolgozoModel model = new DolgozoModel();
    Dolgozo dolg = new Dolgozo();
    dolg = model.getDolgozo(dolg.getDolgozoId());

    dolg.setNev(d.getNev());
    dolg.setAnyjaneve(d.getAnyjaneve());
   //dolg.setSzulido(d.getSzulido());
    dolg.setLakcim(d.getLakcim());
    dolg.setTelefonszam(d.getTelefonszam());

    model.edit(dolg);

return"redirect:getAll.html";
}
}

我在我的实体上使用“日期”属性,也许这是问题所在?

【问题讨论】:

  • 显示模型和来自 F12 的网络跟踪。您很可能必须告诉杰克逊如何反序列化日期
  • 它返回以下日期格式:2016.01.06
  • 快速测试:删除日期。如果一切正常,那么您需要告诉杰克逊如何反序列化您拥有的日期(通常它需要一个时间戳)。见stackoverflow.com/questions/5591967/…。你应该以调试级别运行你的 spring 应用程序,然后你应该看到它无法处理的内容
  • 把你的 Spring 日志转为 DEBUG 看看他们怎么说。
  • 更新方法中,日期属性被注释掉(szulido为日期)

标签: java spring spring-mvc


【解决方案1】:

你的操作是错误的,这样写:

 <f:form action = "update" modelAttribute="Dolgozo" method="post">

路径应如下所示:

 @RequestMapping(value = "/update", method = RequestMethod.POST)

【讨论】:

  • 然后它会抛出这个错误:HTTP Status 404 - /crudSpringMvc/update type 状态报告消息 /crudSpringMvc/update description The requested resource is not available.
  • 发布你所有的控制器类@TeglaTheOne
  • @TeglaTheOne 看看答案
  • 尝试在你的 action="${pageContext.request.contextPath}/update" @TeglaTheOne 中添加这个
  • 你觉得他们的action有什么问题吗? Spring 可以很好地处理后缀匹配,将RequestMappingHandlerMapping#setUseSuffixPatternMatch 设置为true。您的回答也没有解释他们收到的 400 状态代码或如何解决它。
猜你喜欢
  • 2017-06-28
  • 2020-10-31
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
相关资源
最近更新 更多