在Spring Form中传递值时出现错误请求

时间:2018-08-01 15:05:02

标签: java eclipse spring-mvc

我在这里迷失了方向,我有一个名为admin的对象,该属性映射到数据库,admin POJO具有以下属性:

    private int idAd;
    private String nombre;
    private String cargo;
    private Timestamp fechaCreacion;

我有这样一种保存/更新的方法:

    public boolean saveOrUpdate(Admin admin) {
    if(admin.getIdAd()==0)//no id, insert
    {
        admin.setFechaCreacion( new Timestamp(new Date().getTime()));
        return adminDao.save(admin);
    }
    else//got id,update
    {
        return adminDao.update(admin);
    }

和我处理请求的简单控制器方法:

@RequestMapping(value="/admin/save",method=RequestMethod.POST)
public String handleAdmin(
        @ModelAttribute("admin")Admin adminForm,
        Model model,
        RedirectAttributes ra
        )
{
    model.addAttribute("adminForm",adminForm);

    if(adminService.saveOrUpdate(adminForm))
    {
        ra.addFlashAttribute("resultado", "Changes ok");
    }
    else
        ra.addFlashAttribute("resultado", "problem found");

    return "redirect:/admin";
}

到目前为止,所有测试均独立进行。 现在,由于我有与管理员POJO匹配的简单Spring Form,因此问题如下: 如果我仅使用它可以保存/更新的两个属性(标称值,货物),则我的表单如下所示:

<sf:form action="${pageContext.request.contextPath}/admin/save" method="post" modelAttribute="admin">
<table>
    <tr>
        <td>Nombre</td>
        <td> <sf:input path="nombre" type="text"/> </td>
    </tr>
    <tr>
        <td>Cargo</td>
        <td> <sf:input path="cargo" type="text"/> </td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="Guardar Cambios"/></td>
    </tr>
</table>

但是如果我添加其他属性(隐藏的或在文本字段中),则会收到严重的Request错误,看起来像这样:

<sf:form action="${pageContext.request.contextPath}/admin/save" method="post" modelAttribute="admin">
<table>
<!--this condition for showing only if i have an id for updating-->
<c:if test="${admin.idAd ne 0}">
        <sf:input path="idAd" type="hidden"/>
        <sf:input path="fechaCreacion" type="hidden"/>
</c:if>

    <tr>
        <td>Nombre</td>
        <td> <sf:input path="nombre" type="text"/> </td>
    </tr>
    <tr>
        <td>Cargo</td>
        <td> <sf:input path="cargo" type="text"/> </td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="Guardar Cambios"/></td>
    </tr>
</table>

有人可以告诉我我在做什么错吗? 我发现的所有内容与我跟随的教程不同,只是以春季形式,而不是

method="post" modelAttribute="admin">

他们使用

method="post" commandName="admin">

这可能是问题吗?有办法解决吗?因为如果我切换到'commandName'会收到错误500,请帮助

0 个答案:

没有答案