Spring MVC 3:如何重新构建表单操作?

时间:2010-03-03 05:08:09

标签: java spring spring-mvc

鉴于一些典型的搜索表单,我在提交表单时无法构建此表单操作:

/myapp/orders/${orderId)

因为用户正在输入orderId,所以我不能将其包含在表单操作中。

  1. 有没有一个光滑的方式来做到这一点 Spring MVC 3?

  2. 使用拦截器来构建它怎么样?是 这是一个很好的解决方案吗?

  3. 否则我会坚持使用 javascript与行动的mung 的onsubmit。乐趣。

2 个答案:

答案 0 :(得分:0)

根据我的经验,正如您所描述的那样,典型的搜索查询通常无法一对一地映射到结果。即使您要求他们输入订单ID,他们也可能希望能够输入部分ID并从列表中进行选择,或者他们可能会错误输入(并且您希望能够在可能的情况下做出有意义的回复选择,而对不存在的资源的错误GET调用应该只是404)。

我喜欢做的是拥有一个名为SearchResult的中间资源(它不一定是你系统中的实际对象)。然后我的搜索查询是对/ myapp / searchResults /的创建调用,其中包含查询参数作为POST变量。如果创建的搜索结果指向单个订单,则可以重定向到/ orders / 741,但如果没有,则表示您有更多处理它的能力。

答案 1 :(得分:0)

我最终编写了一个拦截器,在GET请求中查找“id”参数,如果找到它,则将该值附加到uri并向前传播。例如,这个:

/myapp/orders?id=1337

变为

/myapp/orders/1337?id=1337