【发布时间】:2014-01-20 00:35:55
【问题描述】:
我有一个表单,用于通过 ajax 提交给未正确填充 @ModelAttribute 的 spring 操作。我已尝试将输入作为 siteName site.siteName 和其他各种内容。
对于我的表单,我正在执行 $('form').ajaxForm() ,然后当我单击提交按钮时它通过 AJAX 提交。
我看到数据是通过 firebug 传递的,但 Spring 并没有对它做任何事情。 任何想法为什么它总是为空?
我的网站类:
public class Site implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String siteName;
public Site() {
}
public Long getId() {
// noop
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getSiteName() {
return this.siteName;
}
public void setSiteName(String siteName) {
this.siteName = siteName;
}
}
我的 HTML(从 ajax 加载)
<form method='post' action='/web/admin/sites/new'>
<fieldset>
<legend>New Site</legend>
<label for='site.siteName'>Site Name</label> <input type='text' id='site.siteName' name='site.siteName'/>
<input type='hidden' name='site.id' value=''/>
<input type='submit'value='Save' />
</fieldset>
</form>
我的备用 HTML(通过 ajax 加载)
<form method='post' action='/web/admin/sites/new'>
<fieldset>
<legend>New Site</legend>
<label for='siteName'>Site Name</label> <input type='text' id='siteName' name='siteName'/>
<input type='hidden' name='id' value=''/>
<input type='submit'value='Save' />
</fieldset>
</form>
最后,我的控制器方法:
@RequestMapping(value="/new", method=RequestMethod.POST)
public String saveSite(@ModelAttribute Site site, Model m)
{
/*Site s = new Site();*/
log.debug("Saving site from POST: {}", site.toString());
m.addAttribute("site", site);
return "/admin/sites/new_site";
}
最后是日志语句的输出:
... SitesController - 从 POST 保存站点:站点 [id=null, 站点名称=null]
【问题讨论】:
-
用
site.something代替something。 -
我已经尝试过了,正如我的评论所说,我已经尝试了所有我能想到的变化。
-
如果您设置了站点的模型属性以加载您的 ajax 表单,您可以分享您的控制器方法吗?
-
你使用的是什么版本的 Spring MVC?你最后的 HTML sn-p 和控制器对我来说很好。
标签: java json spring spring-mvc