Convention提供了一个UnknownHandler。如果系统按命名习惯或者Annotation都找不到Action,就会用这个UnknownHandler再去web下或者classpath下找出一个Action
这个Handler不应该用。正式系统里的Action是严肃的,要么按命名习惯推导出,要么用Annotation显式定义好,不能随便乱找
所以,要禁掉这个Handler. 办法分两步:
1.自己写一个空的Handler
public class MyUnknownHandler implements UnknownHandler {
@Override
public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException {
return null;
}
@Override
public Result handleUnknownResult(ActionContext actionContext, String actionName, ActionConfig actionConfig, String resultCode) throws XWorkException {
return null;
}
@Override
public Object handleUnknownActionMethod(Object action, String methodName) throws NoSuchMethodException {
return null;
}
}
2.将这个Handler配到struts.xml中
<bean type="com.opensymphony.xwork2.UnknownHandler" name="myUnknownHandler" class="MyUnknownHandler"/>
<unknown-handler-stack>
<unknown-handler-ref name="myUnknownHandler" />
</unknown-handler-stack>