映射时发生冲突导致 struts.xml
Conflict while mapping results in struts.xml
我在 MyBdbSearch class 中定义了 3 个方法,并且在 struts.xml 中映射如下。
struts.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>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="bdbSearch"
class="com.bdb.MyBdbSearchAction"
method="showSearchPage">
<result name="okBdbSearchPage">/jsp/search.jsp</result>
</action>
<action name="bdbSearch"
class="com.bdb.MyBdbSearchAction"
method="search">
<result name="okBdbSearch">/jsp/search.jsp</result>
</action>
<action name="bdbSearch"
class="com.bdb.MyBdbSearchAction"
method="getNextResults">
<result name="okBdbSearch">/jsp/search.jsp</result>
</action>
</package>
</struts>
MyBdbSearchAction.java
public class MyBdbSearchAction extends ActionSupport implements ServletRequestAware{
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request = request;
}
public String showSearchPage(){
//some initialization code
return "okBdbSearchPage";
}
public String search(){
//some code
return "okBdbSearch";
}
public String getNextResults(){
//some code
return "okBdbSearch";
}
}
index.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<s:url id="searchUrl" action="/bdbSearch" method="showSearchPage"></s:url>
<s:a href="%{searchUrl}">
<h4>search</h4>
</s:a>
</body>
</html>
当 xml 文件中只配置了一种方法(showSearchPage)时,应用程序可以正常工作。但是如果所有3个方法都像上面那样配置,它会抛出下面的错误。
没有为操作定义结果 com.bdb.MyBdbSearchAction 和结果 okBdbSearchPage
为什么会有这种奇怪的行为?
您必须更改 .xml 文件如下:
<struts>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="bdbSearch" class="com.bdb.MyBdbSearchAction">
<result name="okBdbSearchPage">/jsp/search.jsp</result>
<result name="okBdbSearch">/jsp/search.jsp</result>
<result name="okBdbSearch">/jsp/search.jsp</result>
</action>
</package>
我在 MyBdbSearch class 中定义了 3 个方法,并且在 struts.xml 中映射如下。
struts.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>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="bdbSearch"
class="com.bdb.MyBdbSearchAction"
method="showSearchPage">
<result name="okBdbSearchPage">/jsp/search.jsp</result>
</action>
<action name="bdbSearch"
class="com.bdb.MyBdbSearchAction"
method="search">
<result name="okBdbSearch">/jsp/search.jsp</result>
</action>
<action name="bdbSearch"
class="com.bdb.MyBdbSearchAction"
method="getNextResults">
<result name="okBdbSearch">/jsp/search.jsp</result>
</action>
</package>
</struts>
MyBdbSearchAction.java
public class MyBdbSearchAction extends ActionSupport implements ServletRequestAware{
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request = request;
}
public String showSearchPage(){
//some initialization code
return "okBdbSearchPage";
}
public String search(){
//some code
return "okBdbSearch";
}
public String getNextResults(){
//some code
return "okBdbSearch";
}
}
index.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<s:url id="searchUrl" action="/bdbSearch" method="showSearchPage"></s:url>
<s:a href="%{searchUrl}">
<h4>search</h4>
</s:a>
</body>
</html>
当 xml 文件中只配置了一种方法(showSearchPage)时,应用程序可以正常工作。但是如果所有3个方法都像上面那样配置,它会抛出下面的错误。
没有为操作定义结果 com.bdb.MyBdbSearchAction 和结果 okBdbSearchPage
为什么会有这种奇怪的行为?
您必须更改 .xml 文件如下:
<struts>
<include file="struts-default.xml"/>
<package name="default" extends="struts-default">
<action name="bdbSearch" class="com.bdb.MyBdbSearchAction">
<result name="okBdbSearchPage">/jsp/search.jsp</result>
<result name="okBdbSearch">/jsp/search.jsp</result>
<result name="okBdbSearch">/jsp/search.jsp</result>
</action>
</package>