我有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错误。我有什么问题吗?
答案 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。