未在 prepare 方法中设置的属性
Properties not being set in prepare method
我正在使用 Struts2 和实施 Preparable
interface 的操作。
当我提交表单时,没有在 prepare()
操作方法中设置操作属性。我在操作方法中得到值(例如 execute()
),但在 prepare()
方法中它们是空的。
如何获取 运行 prepare()
方法之前设置的属性?
在默认拦截器堆栈中,准备拦截器在参数拦截器之前运行。也就是说在Prepare Interceptor执行prepare()
方法的时候参数的注入还没有发生。您需要将参数拦截器移动到准备拦截器之前,或者复制它,在准备拦截器之前放置一个声明。
有一个为此目的创建的默认拦截器堆栈,paramsPrepareParamsStack
;阅读更多 here and here.
请注意,此类问题在Struts2中经常出现,您需要了解拦截器堆栈的工作原理以及每个拦截器负责哪些业务。
例如,它发生在 when using ModelDriven, or when using Wildcard Mapping。如果你把它们放在错误的地方,你的自定义拦截器肯定会发生这种情况。
我正在使用 Struts2 和实施 Preparable
interface 的操作。
当我提交表单时,没有在 prepare()
操作方法中设置操作属性。我在操作方法中得到值(例如 execute()
),但在 prepare()
方法中它们是空的。
如何获取 运行 prepare()
方法之前设置的属性?
在默认拦截器堆栈中,准备拦截器在参数拦截器之前运行。也就是说在Prepare Interceptor执行prepare()
方法的时候参数的注入还没有发生。您需要将参数拦截器移动到准备拦截器之前,或者复制它,在准备拦截器之前放置一个声明。
有一个为此目的创建的默认拦截器堆栈,paramsPrepareParamsStack
;阅读更多 here and here.
请注意,此类问题在Struts2中经常出现,您需要了解拦截器堆栈的工作原理以及每个拦截器负责哪些业务。
例如,它发生在 when using ModelDriven, or when using Wildcard Mapping。如果你把它们放在错误的地方,你的自定义拦截器肯定会发生这种情况。