1

我有一个带有表单的 JSP 文件。该表单包含一个选择下拉菜单

<s:select label="Make a selection" headerKey="-1" headerValue="Select Option" list="stuff" name="books" />

现在,为了填充选择菜单,我创建了一个 java 文件来执行此操作。我还创建了一个SelectAction将填充菜单并使表单的操作指向SelectAction

在我的 .xml 文件中,我对其进行了调整,使其包含填充 Select 的操作,然后重定向到将处理表单的操作

XML 文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="example" namespace="/example" extends="struts-default">
        <action name="SelectAction" class="example.SelectAction">
            <result type="redirectAction">
                <param name="ActionName">AddSubmitAction</param>
                <param name="namespace">/example</param>
            </result>
        </action>
        <action name="AddSubmitAction" class="example.AddSubmittAction">
            <result type="chain">
                <result>/example/addOrder.jsp</result>

            </result>
          </action>
    </package>
</struts>

我在 xml 中尝试做的是首先拥有 SelectAction(因此选择菜单填充),然后将其重定向到 AddSubmitAction,它将处理表单输入。

但是,这是行不通的。我收到未找到调度程序的错误。我的方法不正确吗?redirectAction 在这里被滥用了吗?

4

2 回答 2

0

填充您的选择标签值的最佳方法是制作准备方法。当你的动作类被调用时,prepare 方法总是首先被调用。

因此,在您的一个 Action 类中制作准备方法:

public void prepare(){ //set your list here }

您还可以为您的操作类中定义的每个方法定义准备方法:如果您的方法是 public String execute(){ }

那么你的prepare方法应该是 public void prepareExecute(){ 并且在你的action类中实现Preparable接口。

进一步阅读:准备拦截器

于 2013-10-07T06:50:05.963 回答
0

动作名称参数区分大小写

<param name="actionName">AddSubmitAction</param>
于 2013-10-06T19:28:08.390 回答