【发布时间】:2012-01-19 19:14:37
【问题描述】:
我有一个关于 Struts 2 方法调用的查询。 假设我想动态调用方法并且该方法名称将来自 DB。所以情况是, 有一个主模块和 2 个子模块,比如说 M1 和 M2,现在来自任何模块的每个请求都将通过主模块,所以如果模块 M1 要求方法名称假设 getName() 仅存在于 M2 动作类中,(这里是 M1不知道),然后首先 M1 将向主模块发送请求(以方法名称作为参数),然后主模块将找出该请求用于哪个方法,然后他将调用 M2 的 getName() 方法。为此,我们不需要将 getName() 方法映射到 Struts.xml 中,我们必须在主模块的 Action 类中进行设置。我无法理解如何执行此操作,因为每次主模块都会获取一些方法名称(作为参数)并调用包含该方法名称的相应操作。 请帮忙
谢谢 塔潘
【问题讨论】:
-
好像不需要struts2的请求处理机制,如果存在多个模块相同的方法名怎么办?
-
嗨 Umesh 感谢您的回复,我们已将 DB 中的所有方法名称添加到它们的模块名称中,如果方法名称重复,那么我们将使用第一个方法,位于 index(0),在我们的列表。
-
我还想问的一件事 通常我们在 JSP 中决定我们将在我们的动作中调用哪个方法,例如 action="customerAction!getCustomerName.do",所以在这里我们知道我们调用哪个方法(就像上面的 getCustomerName 方法),我们可以动态地制作它吗?我的意思是在动作类中,我们可以定义特定动作的方法名称(我们要调用)吗?
-
我无法正确回答您的问题。但是您可以在您的操作类中定义任意数量的方法,并可以在您的 struts.xml 中配置它们。另一种方法是让一个操作处理所有请求并从请求中获取方法名称,而不是在主方法中将调用委托给受尊重的方法
-
嗨 Umesh,感谢您的回答。