2013-03-19 75 views
-1

我想调用prepare()方法时,在Struts中2Struts2 - 如何在页面加载时调用prepare()方法?

页面加载它是我的理解是,如果我实现了我的行动Preparable接口的prepare()方法应自动触发时加载页面。它是否正确?还是需要其他配置?

我问,因为这是我所做的,准备方法只是在执行方法触发前点击按钮时触发。

我希望在页面加载之前或之后触发prepare方法以填充操作的属性。我怎样才能做到这一点?

+0

1)删除你的方法排除(你放在那里,为什么)?; 2)把你的prepare()方法中的System.out.println(“Foo has bars!”)放在第一行;然后告诉我们发生了什么事。正如你的其他问题(http://stackoverflow.com/questions/15437264/struts2-prepare-method-does-not-run-on-page-load)回答,可能你的准备* *运行,然后去由于参数未初始化而导致错误。确保你使用的拦截器堆栈我建议你在那里。不要触摸它,除非你知道你在做什么...... – 2013-03-19 17:01:50

+0

@AndreaLigios 1)你是什么意思删除排除我的方法?我没有指出任何排除情况...... 2)页面加载时没有打印出任何内容。当我点击一个按钮时,Prepare正在运行。 – stinkyPete 2013-03-20 11:29:13

+0

我在引用:“警告:参数[registerUser]在excludeParams模式列表上!” – 2013-03-21 08:44:43

回答

2

prepare()执行Preparable动作时执行。

如果它没有触发,那么你的prepare()方法可能是错误的动作,你最初不是通过一个动作访问页面(例如,打一个普通的JSP),或者有一个拦截器栈配置问题。

+0

prepare()方法在我的所有操作上......我没有打到一个常规的jsp页面我正在使用struts配置 registerPage.jsp。它必须是一个配置问题。但我该如何配置它? – stinkyPete 2013-03-19 16:35:07

+0

如果与此有任何关系,我会收到警告:警告:参数[registerUser]位于excludeParams模式列表中! – stinkyPete 2013-03-19 16:36:21

+0

@stinkyPete没有进一步的信息,它是不可能的帮助。使用正常的堆栈,你不需要为'prepare()'方法进行任何操作。 – 2013-03-19 17:09:07

1

这是我的理解是,如果我实现制备的接口上 我的行动的准备()方法会自动触发 页面加载时。

根据我的理解这是不正确的。 prepare方法用于准备一些数据以供execute()方法或Action类的任何其他工作方法使用,并因此在来自浏览器的请求的worker方法之前调用。

在页面加载时调用prepare()方法在编程上会很麻烦,因此应该避免。尝试设置属性其他方式

希望这有助于:)

相关问题