struts2动作映射不正确

时间:2013-12-17 13:52:03

标签: java html jsp model-view-controller struts2

我有2个actionClasses,一个在启动时调用。我正试图通过按下按钮(现在)调用一个动作,该按钮进入另一个页面并在控制台中输出一条消息说这个动作是成功的,但是当我点击它时它没有被调用。我做错了吗?

struts.xml中

<struts>
    <package name="default" extends="struts-default">
        <action name="*" class="actionPackage.ActionClass1">
            <result name="homepage">/default.jsp</result>
            <result name="myNextPage">/nextPage.jsp</result>
        </action>
    </package>
</struts>

actionClass1

public String execute(){
    System.out.println("the web application is working properly!");
    return "homepage";
}

actionClass2

public String execute(){
    System.out.println("the button works!");
    return "myNextPage";
}

的Default.jsp

function strutsTestFunc(){document.getElementById("querySubmitter").submit()}

...

<form name="searchForm" method="post" action="actionPackage.ActionClass2" id="querySubmiter">

...

<input id="filterSubmit" type="submit" value="Search" onclick="strutsTestFunc()">

当我单击按钮时,它会转到“/actionPackage.ActionClass2”并给出404错误。我有什么问题吗?

1 个答案:

答案 0 :(得分:2)

你的映射是错误的。还要避免使用*通配符映射所有操作,实际上绕过框架机制。

<struts>
    <package name="default" extends="struts-default">
        <action name="action1" class="actionPackage.ActionClass1">
            <result name="homepage">/default.jsp</result>
        </action>
        <action name="action2" class="actionPackage.ActionClass2">
            <result name="myNextPage">/nextPage.jsp</result>
        </action>
    </package>
</struts>
JSP中的

总是指向动作的映射,而不是动作类本身:

<form action = "action2" 
        name = "searchForm" 
      method = "post"  
          id = "querySubmiter" >

运行后,开始使用SUCCESS等默认结果,并使用<s:submit /> struts标记提交,不需要javascript。