Struts2:如何在URL中为结果类型dispatcher传递参数[默认值]

Struts2:如何在URL中为结果类型dispatcher传递参数[默认值],url,struts2,Url,Struts2,当然,参数可以通过URL(结果类型重定向/重定向操作), 或者通过@action(params)(静态参数拦截器)传递到操作) 我想要什么 id=123必须存在于验证错误之后的URL(@Result(name=“input”)) 类似于RESTfulurl模式(Struts2 rest插件不被考虑): 我使用在post后重定向技术+消息存储拦截器进行成功操作,但这不能用于验证错误后的输入,因为操作数据(包括无效数据)将丢失/恢复为默认值 欢迎提出任何解决方案/建议。谢谢。您尝试过使用通配符捕

当然,参数可以通过URL结果类型
重定向
/
重定向操作
),
或者通过
@action(params)
静态参数拦截器
)传递到操作


我想要什么
id=123
必须存在于
验证错误之后的URL
@Result(name=“input”)

类似于RESTfulurl模式(
Struts2 rest插件
不被考虑):


我使用
在post后重定向技术
+
消息存储拦截器
进行成功操作,但这不能用于
验证错误
后的
输入
,因为操作数据(包括无效数据)将丢失/恢复为默认值


欢迎提出任何解决方案/建议。谢谢。

您尝试过使用通配符捕获数据吗

这里是一些struts2文档的链接(快速阅读它,我认为它不是很有用):

但是,如果您阅读本文和解决方案,您将清楚地看到如何从URL中捕获数据(尽管该问题的海报对排除部分URL更感兴趣,但它只是使主题更完整):


您的问题可能主要是因为使用了“发布后重定向”。在struts2中这样做没有什么价值。一般来说,使用自定义拦截器更好地解决这些操作的横切问题。如果您担心双重提交,TokenInterceptor interceptor已经解决了这个问题

谢谢!
通配符映射
(2.2+)中的一个方法应该可以解决我的问题。在Post后使用重定向(以及消息存储拦截器)有哪些缺点?这可能不是一个大问题。简单地说,创建两个将形成链的动作是没有意义的。你也可以只做一个动作,唯一的原因是如果第一个动作对它将链接到的一组动作做了一些处理。这正是“交叉关注点”的定义,也是拦截器要解决的问题。因此,如果第一个操作被实现为拦截器,那么就不需要消息存储拦截器。事情应该变得更简单。
/update?id=123
/update/123