如何从 Struts 2 中的 JSP 页面同时调用/访问 2 个不同的操作?

问题描述 投票:0回答:1

我正在开发一个Struts2应用程序。为了删除重复的代码,我希望能够访问 2 个不同 JSP 页面(假设为

Action
A
)中的
page_1.jsp
(我们称之为
page_2.jsp
)。到目前为止,一切都很好。问题是,在这 2 个 JSP 页面中,我还需要同时访问附加操作:分别是
B
C

总结一下:

page_1.jsp
需要访问操作
A
B
,而
page_2.jsp
需要访问操作
A
C
。我怎样才能得到它?据我所知,在
type = "redirectAction"
中使用
struts.xml
不起作用,因为它只会重定向到操作,因此 JSP 页面只能访问最后调用的操作。

示例:

<action name="A" class="package.action.A" method="execute">
    <result name="success" type="redirectAction">B</result>
</action>

<action name="B" class="package.action.B" method="execute">
    <result name="success">page_1.jsp</result>
</action>

据我所知,在上面的示例中

page_1.jsp
只能访问操作
B
,对吧?

编辑:

事实上,类

A
被命名为
CreateArchitecturesAction
- 我需要在操作
B
C
上访问它,以便在两者上填充类似的
<s:radio>
标签。代码就这么简单:

public class CreateArchitecturesAction extends ActionSupport
{
    private List<String> architectures;

    private static final String intel32 = "Intel 32 Bit", intel64 = "Intel 64 Bit";

    public String execute()
    {
        architectures = new ArrayList<String>();
        architectures.add(intel32);
        architectures.add(intel64);

        return SUCCESS;
    }

    public List<String> getArchitectures()
    {
        return architectures;
    }

    public String getDefaultArchitectureValue()
    {
        return intel32;
    }
}
jsp struts2 scope action
1个回答
1
投票

您只能从 JSP 访问一项操作,但是在分派页面后您可以访问 JSP 中可用的任何范围。所以这个流程

<action name="A" class="package.action.A" method="execute">
    <result name="success" type="dispatcher">B</result>
</action>

<action name="B" class="package.action.B" method="execute">
    <result name="success">page_1.jsp</result>
</action> 

如果您将操作的范围更改为请求范围,您就可以访问操作

B

© www.soinside.com 2019 - 2024. All rights reserved.