【问题标题】:Struts 2 - Dynamically set the method name, from one Action to call another action method, to executeStruts 2 - 动态设置方法名,从一个Action调用另一个Action方法,执行
【发布时间】: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,感谢您的回答。

标签: java servlets struts2


【解决方案1】:

国际海事组织: 您可以使用以下技术动态传递方法名称

if action="customerActiongetCustomerName.do

<action name="customerAction*"
            class="xxxx" method="{1}">
            <result name="success">/yyyy.jsp</result>
</action>

【讨论】:

  • 我相信OP已经提到他不想在struts.xml文件中设置它们
  • @Arun,谢谢 Arun,你的回答,但你告诉我的方式,我不想用那个。
猜你喜欢
  • 1970-01-01
  • 2016-06-23
  • 2010-12-24
  • 1970-01-01
  • 2015-10-14
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多