使用struts2集成spring2.5后,jsp页面不能使用struts2标签,出现异常:
我的jsp页面(test.jsp):
<%@ page language="java" import="java.util.*"
 contentType="text/html; charset=utf-8" pageEncoding="GBK"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>test</title>
</head>
<body>
<h2>Hello World! success</h2>
<s:a action="/TPWeb/test.do">特好看</s:a>
</body>
</html>
一进入test.jsp就出现异常,异常信息如下:
 ERROR [org.apache.struts2.components.ClosingUIBean]com.opensymphony.xwork2.util.logging.commons.CommonsLogger.error(CommonsLogger.java:27) - Could not open template
java.lang.NullPointerException
at org.apache.struts2.components.template.TemplateEngineManager.getTemplateEngine(TemplateEngineManager.java:102)
at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:549)
at org.apache.struts2.components.ClosingUIBean.start(ClosingUIBean.java:59)
at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:53)
at org.apache.jsp.jsp.test_jsp._jspx_meth_s_005fform_005f0(test_jsp.java:96)
at org.apache.jsp.jsp.test_jsp._jspService(test_jsp.java:71)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    使用struts2需要的几个架包都引入了,我检查过的
    导入<%@ taglib uri="/struts-tags" prefix="s"%>标签库也就这个  应该不存在路径问题吧?
      

  2.   

    <s:a action="/TPWeb/test.do">特好看</s:a> 
    我没这么写过,好像<s:a action=""></s:a>里没有直接写action=""吧
      

  3.   

    你在WEB.XML文件里配置路径了吗?
      

  4.   

    我今天也遇到这个问题了。
    你可以这样解决!
    方案一:在web.xml中加:
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>方案二:在web.xml中加:
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
      

  5.   

    <s:a href="/TPWeb/test.do">特好看</s:a>  
     这样呢?
      

  6.   

    在struts2下,任何包含struts2标签的jsp 页面都是不能直接访问的.必须经过action,struts2才会处理到该页面. 
      

  7.   

    应该是少了free.jar这个jar包吧