【发布时间】:2010-03-03 05:08:09
【问题描述】:
鉴于一些典型的搜索表单,我无法在提交表单时构造此表单操作:
/myapp/orders/${orderId)
因为用户正在输入 orderId,所以我无法将其包含在表单操作中。
在 Spring MVC 3?
使用拦截器来构造这个怎么样?是 这是一个好的解决方案吗?
否则我无法使用 javascript 与动作 提交。有趣。
【问题讨论】:
标签: java spring spring-mvc
鉴于一些典型的搜索表单,我无法在提交表单时构造此表单操作:
/myapp/orders/${orderId)
因为用户正在输入 orderId,所以我无法将其包含在表单操作中。
在 Spring MVC 3?
使用拦截器来构造这个怎么样?是 这是一个好的解决方案吗?
否则我无法使用 javascript 与动作 提交。有趣。
【问题讨论】:
标签: java spring spring-mvc
根据我的经验,典型的搜索查询通常不会像您所描述的那样无缝地一对一地映射到结果。即使您要求他们输入订单 ID,他们也可能希望能够输入部分 ID 并从列表中进行选择,或者他们可能输入错误(并且您希望能够给出有意义的回复选择,而对不存在的资源的错误 GET 调用应该只是 404)。
我喜欢做的是有一个称为 SearchResult 之类的中间资源(它不必是系统中的实际对象)。然后我的搜索查询是对 /myapp/searchResults/ 的创建调用,其中包括查询参数作为 POST 变量。如果创建的搜索结果指向单个订单,那么您可以重定向到 /orders/741,但如果不是,您有更多的能力来处理它。
【讨论】:
我最终编写了一个拦截器,它在 GET 请求中查找“id”参数,如果找到,则将该值附加到 uri 并继续前进。例如,这个:
/myapp/orders?id=1337
变成
/myapp/orders/1337?id=1337
【讨论】: