//interceptor-config.xml
<?xml version="1.0" encoding="UTF-8"?><interceptor-config>
<interceptor name ="displayInterceptor" type ="com.accp.filter.InterceptorQx" />
<action type ="/jobwant">
<interceptor name ="displayInterceptor" />
</action>
//stuts-config.xml
<!-- 招聘-发布职位 -->
<action
attribute="JobWantForm"
name="JobWantForm"
path="/jobwant"
scope="request"
parameter="method"
type="com.accp.struts.action.JobWantAction">
<set-property property="cancellable" value="true" />
</action>
</action-mappings>
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
<message-resources parameter="com.accp.struts.ApplicationResources" />
<plug-in className ="net.sf.struts.saif.SAIFSpringPlugin" >
<set-property property ="interceptor-config" value ="/WEB-INF/interceptor-config.xml"/>
</plug-in>
</struts-config>
<?xml version="1.0" encoding="UTF-8"?><interceptor-config>
<interceptor name ="displayInterceptor" type ="com.accp.filter.InterceptorQx" />
<action type ="/jobwant">
<interceptor name ="displayInterceptor" />
</action>
//stuts-config.xml
<!-- 招聘-发布职位 -->
<action
attribute="JobWantForm"
name="JobWantForm"
path="/jobwant"
scope="request"
parameter="method"
type="com.accp.struts.action.JobWantAction">
<set-property property="cancellable" value="true" />
</action>
</action-mappings>
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
<message-resources parameter="com.accp.struts.ApplicationResources" />
<plug-in className ="net.sf.struts.saif.SAIFSpringPlugin" >
<set-property property ="interceptor-config" value ="/WEB-INF/interceptor-config.xml"/>
</plug-in>
</struts-config>
解决方案 »
- Eclipse签出CVS项目,空包不显示,求解·
- js和jstl的问题!
- 请高手指点关于关系表怎样插入
- 在 hibernate中configuration.configure(configFile);这句报错
- 如何让新建的STRUTS 文件自动生时添加本地标签, 生成的字符编码是UTF-8
- 又是一个乱码问题
- log4j配置后可正常打印,但有控制台上有警告提示,请看看是什么问题?
- Tomcat中一个Context下能配置2个数据库连接池吗?因为web程序要同时访问2个数据库服务器!谢谢
- 运行EJB,需要用什么应用服务器?讲讲区别,谢谢~~~~
- hibernate连接数据库错误
- 校园网战
- 关于Ecside数据列表异步加载问题
package com.accp.filter;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import net.sf.struts.saif.ActionHaveForwardInterceptor;public class InterceptorQx implements ActionHaveForwardInterceptor{ public ActionForward afterAction(Action action, ActionMapping mapping,
ActionForm actionForm, HttpServletRequest res, HttpServletResponse req)
throws IOException, ServletException {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!");
return null;
} public ActionForward beforeAction(Action action, ActionMapping mapping,
ActionForm actionForm, HttpServletRequest res, HttpServletResponse req)
throws IOException, ServletException {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!");
return null;
}
}//异常
javax.servlet.ServletException: javax.servlet.ServletException: Specified RequestProcessor not compatible with saif.
at net.sf.struts.saif.SAIFSpringPlugin.initRequestProcessorClass(SAIFSpringPlugin.java:99)
at net.sf.struts.saif.SAIFSpringPlugin.init(SAIFSpringPlugin.java:40)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: javax.servlet.ServletException: Specified RequestProcessor not compatible with saif.
at net.sf.struts.saif.SAIFSpringPlugin.initRequestProcessorClass(SAIFSpringPlugin.java:94)
... 30 more
我把SAIFSpringPlugin反编译,将saif-sping.jar中的那个class删除了
然后自己在src下面建个相同的包,下面建个同名的java类。
这样,在struts1.3.10 + spring3.1.0环境下也没问题了。package net.sf.struts.saif;import javax.servlet.ServletException;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.config.ControllerConfig;
import org.apache.struts.config.ModuleConfig;/**
*
* <pre>
* Title:SAIFSpringPlugin,替代saif-spring.jar中的SAIFSpringPlugin
* Description: Title:SAIFSpringPlugin,
* 增加对DelegatingRequestProcessor和DelegatingTilesRequestProcessor的支持
* </pre>
* @author [email protected]
* @version 1.00.00
* <pre>
* 修改记录
* 修改后版本: 修改人: 修改日期: 修改内容:
* </pre>
*/
public class SAIFSpringPlugin implements
org.apache.struts.action.PlugIn { private static final Log log;
private static final String DelegatingRequestProcessor = "org.springframework.web.struts.DelegatingRequestProcessor";
private static final String DelegatingTilesRequestProcessor = "org.springframework.web.struts.DelegatingTilesRequestProcessor"; public SAIFSpringPlugin()
{
} public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException
{
initRequestProcessorClass(servlet, config);
} public void destroy()
{
} protected void initRequestProcessorClass(ActionServlet servlet, ModuleConfig config)
throws ServletException
{
String saifProcessorClassname = net.sf.struts.saif.SAIFSpringRequestProcessor.class.getName();
String saifTilesProcessorClassname = net.sf.struts.saif.SAIFTilesSpringRequestProcessor.class.getName();
ControllerConfig ctrlConfig = config.getControllerConfig();
String configProcessorClassname = ctrlConfig.getProcessorClass();
if(configProcessorClassname.equals(org.apache.struts.action.RequestProcessor.class.getName()) || configProcessorClassname.endsWith(saifProcessorClassname) || configProcessorClassname.equals(DelegatingRequestProcessor))
{
ctrlConfig.setProcessorClass(saifProcessorClassname);
if(log.isInfoEnabled())
{
log.info("Loading the saif request processor without Tiles support");
}
return;
}
if(configProcessorClassname.equals(org.apache.struts.tiles.TilesRequestProcessor.class.getName()) || configProcessorClassname.endsWith(saifTilesProcessorClassname) || configProcessorClassname.equals(DelegatingTilesRequestProcessor))
{
ctrlConfig.setProcessorClass(saifTilesProcessorClassname);
if(log.isInfoEnabled())
{
log.info("Loading the saif request processor with Tiles support");
}
return;
}
try
{
Class saifProcessorClass = net.sf.struts.saif.SAIFSpringRequestProcessor.class;
Class saifTilesProcessorClass = net.sf.struts.saif.SAIFTilesSpringRequestProcessor.class;
Class configProcessorClass = Class.forName(configProcessorClassname);
if(!saifProcessorClass.isAssignableFrom(configProcessorClass) && !saifTilesProcessorClass.isAssignableFrom(configProcessorClass))
{
String msg = "Specified RequestProcessor not compatible with saif.";
throw new ServletException(msg);
}
}
catch(Exception ex)
{
throw new ServletException(ex);
}
if(log.isDebugEnabled())
{
log.debug("saif plugin class successfully registered");
}
} static
{
log = LogFactory.getLog(net.sf.struts.saif.SAIFSpringPlugin.class);
}}