Spring 框架中错误的请求绑定对象

发布于 2024-11-07 15:33:07 字数 1236 浏览 0 评论 0原文

我们正在尝试进行三级绑定:

祖父 -> (有很多)父母-> (有很多)孩子

我们的祖父和父母保存在数据库中,然后他们有自动生成的 ID。但我们的 Child 在某些情况下是新的,并且没有 id 值。

当我们通过 ajax 将此信息发送到我们的服务器 (Weblogic) 时,我们将使用以下方法绑定到数据:

@RequestMapping(value = "/blablabla/update", method = RequestMethod.POST)
public String updateProducts(@ModelAttribute GrandFather grandpa, BindingResult result, Model model) {

...
}

结果是您在浏览器中看到错误请求错误(使用 Firebug)。我们只看到孩子没有id​​,其他值都很完美。您在服务器端看不到任何内容,您的方法的任何代码都会被执行。

这本来不是问题,但确实如此。对发生的事情有什么想法吗?

谢谢。

笔记。我们使用Spring框架;春季MVC; Weblogic 服务器和其他控制器和绑定正在工作。

更新

使用的html代码:

<c:forEach items="${question.answers}" var="answer" varStatus="statusAnswer"> 
... 
<c:forEach items="${answer.ratings}" var="rating" varStatus="statusRating"> 
... 
<input type="hidden" name="questions[${statusQuestion.index}].id" value="${question.id}"/> 
<input type="hidden" name="questions[${statusQuestion.index}].respuestas[${statusQuestion.index}].ratings[${statusRating.index}].id" value="${valoracion.id}" /> 
... 
</c:forEach> 
... 
</c:forEach>

如何发送很难粘贴在这里有很多javascript来填充对象的一些值。

We are trying to do a three level binding:

GrandFather -> (has many) Parent -> (has many) Child

Our GrandFather and parents are saved in database then they have id's autogenerated. But our Child's are new in some cases and they haven't id values.

When we send this information by ajax to our server (Weblogic), we are doing a binding to the data using:

@RequestMapping(value = "/blablabla/update", method = RequestMethod.POST)
public String updateProducts(@ModelAttribute GrandFather grandpa, BindingResult result, Model model) {

...
}

The result is that you see a Bad Request error in your browser (using Firebug). We only see that the child haven't ids, the others values are perfect. You can't see any in server side, any code of your method is executed.

That wouldn't be a problem, but it's. Any ideas about what's happen?

Thanks.

Note. We are using Spring framework; Spring MVC; Weblogic server and other controllers and bindings are working.

Update:

The html code used:

<c:forEach items="${question.answers}" var="answer" varStatus="statusAnswer"> 
... 
<c:forEach items="${answer.ratings}" var="rating" varStatus="statusRating"> 
... 
<input type="hidden" name="questions[${statusQuestion.index}].id" value="${question.id}"/> 
<input type="hidden" name="questions[${statusQuestion.index}].respuestas[${statusQuestion.index}].ratings[${statusRating.index}].id" value="${valoracion.id}" /> 
... 
</c:forEach> 
... 
</c:forEach>

The how to send it's difficult to paste here have a lot of javascript to fill some values of the objects.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

⊕婉儿 2024-11-14 15:33:07

是的,我有关于这个问题的解决方案。
如果您使用 ajax 发送数据,请不要使用 model 属性。
使用控制器中的请求对象获取参数。

像这样写代码

@RequestMapping(value = "/blablabla/update", method = RequestMethod.POST)
public String updateProducts(HttpServletRequest request, Model model) {

...
}

Yes, i have solution about this problem.
If you are sending data using the ajax then please do not use model attribute.
Get your parameter using request object in controller.

write code like this

@RequestMapping(value = "/blablabla/update", method = RequestMethod.POST)
public String updateProducts(HttpServletRequest request, Model model) {

...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文