如何在 Struts2 中调用操作 class 创建

How to invoke Action class creation in Struts2

我有登录和计算 JSP 页面。计算页面包含列表,需要初始化动作对象。这里是login.xml

<struts>
  <package name="default" extends="struts-default">
    <action name="*Action" class="com.task.action.{1}Action">
        <result name="success">/calculation.jsp</result>
        <result name="input">/login.jsp</result>
    </action>
  </package>
</struts>

calculation.jsp:

<s:form action="CalculationAction">
    <s:select label="Types" 
    list="calculationTypes" 
    name="calculationType" value="getDefaultCalculationType"/>
    <s:submit />
</s:form>

执行 LoginAction class 后,我得到 "success" 并移动到 calculation.jsp。问题是未创建 CalculationAction,并且 jsp 中的列表无法初始化。如果我调用 http://localhost:8082/Task/CalculationAction.action ,jsp 页面创建正确。 我也尝试在登录页面中进行引用,它也有效。

<s:url id="calculationUrl" action="CalculationAction">  </s:url>

<div class="tab-wrapper">
    <a href="login.jsp">Login Page</a> 
    <s:a href="%{calculationUrl}">Calculation Page</s:a>
</div>

如何让程序执行后正常运行LoginAction?

LogingAction 添加一个结果以重定向到 CalculationAction,并且 return 这个结果而不是 LogingAction 中的 "success"

<action name="*Action" class="com.task.action.{1}Action">
    <result name="success">/calculation.jsp</result>
    <result name="input">/login.jsp</result>
    <result name="successfulLogin" type="redirectAction">CalculationAction</result>
</action>

"success" 上的 CalculationAction 应该 return 一个 calculation.jsp 并且计算动作将在值堆栈中,因此您可以在 calculationTypes 初始化时操作已执行。