我在这里迷失了方向,我有一个名为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,请帮助