大侠们,我点击<a href="BbssectorAction!list.action">论坛</a>的时候,触发到
package com.news.action;import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.news.dao.BbssectorDAO;
import com.news.dao.impl.BbssectorDAOImpl;
import com.news.model.Bbssector;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class BbssectorAction extends ActionSupport{
private int id;
private Bbssector bbssector;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Bbssector getBbssector() {
return bbssector;
}
public void setBbssector(Bbssector bbssector) {
this.bbssector = bbssector;
}
public String execute() throws Exception
{
return SUCCESS;
}
public String list() throws Exception
{
String result="";
BbssectorDAO bbssectorDAO=new BbssectorDAOImpl();
List list=bbssectorDAO.searchAllBbssector();
System.out.println(list);
if(list!=null)
{
ActionContext act=ActionContext.getContext();
Map map=act.getSession(); 
map.put("sector", list);
result="sector";
}
else
{
result="error";
}
return result;
}

}
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>
     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="false" />
<constant name="struts.multipart.saveDir" value="/tmp"/>    <package name="default" namespace="/" extends="struts-default">
      <action name="BbssectorAction" class="com.news.action.BbssectorAction">
       <result name="sector">/sector.jsp</result>
       <result name="error">/error.jsp</result>
      </action>
    </package></struts>
点击的时候抛出:
HTTP Status 500 -type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionjava.lang.NullPointerException
org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:500)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
com.news.action.util.FCKFilter.doFilter(FCKFilter.java:21)note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
Apache Tomcat/6.0.35
不知怎么解决,求大侠指点strutsaction

解决方案 »

  1.   

    com.news.action.util.FCKFilter.doFilter(FCKFilter.java:21)
      

  2.   

    package com.news.action.util;import java.io.IOException; import javax.servlet.FilterChain; 
    import javax.servlet.ServletException; 
    import javax.servlet.ServletRequest; 
    import javax.servlet.ServletResponse; 
    import javax.servlet.http.HttpServletRequest; 
    import org.apache.struts2.dispatcher.FilterDispatcher;
    @SuppressWarnings("deprecation")
    public class FCKFilter extends FilterDispatcher {
     public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException, ServletException {   
            HttpServletRequest request = (HttpServletRequest) req;  
            String URI = request.getRequestURI(); 
            String[] uriArray = URI.split("/ckfinder/core/connector/java/*/"); 
            int arrayLen = uriArray.length; 
            if (arrayLen >= 2) { 
                chain.doFilter(req, res);  
            }else { 
                super.doFilter(req, res, chain);   
            } 
        }  
      

  3.   

    com.news.action.util.FCKFilter.doFilter(FCKFilter.java:21) 这个是我自定义的一个拦截器来的
      

  4.   

    web.xml里面是不是要改下
    <filter>
       <filter-name>struts2</filter-name>
       <filter-class>
       com.news.action.util.FCKFilter.doFilter
       </filter-class>
      </filter>
      <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
    设置成你自己定义的过滤器
      

  5.   

    空指针,打个断点,debug下,找出来很快
      

  6.   

    已经设置了,还是不行呢,我的web.xml如下
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
      <display-name></display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <servlet-name>ConnectorServlet</servlet-name>
        <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class>
        <init-param>
          <param-name>XMLConfig</param-name>
          <param-value>/WEB-INF/config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>ConnectorServlet</servlet-name>
        <url-pattern>
    /ckfinder/core/connector/java/connector.java
    </url-pattern>
      </servlet-mapping>
      <filter>
        <filter-name>FileUploadFilter</filter-name>
        <filter-class>com.ckfinder.connector.FileUploadFilter</filter-class>
        <init-param>
          <param-name>sessionCookieName</param-name>
          <param-value>JSESSIONID</param-value>
        </init-param>
        <init-param>
          <param-name>sessionParameterName</param-name>
          <param-value>jsessionid</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>FileUploadFilter</filter-name>
        <url-pattern>
    /ckfinder/core/connector/java/connector.java
           </url-pattern>
      </filter-mapping>
      <session-config>
        <session-timeout>10</session-timeout>
      </session-config>
      <filter>
        <filter-name>struts2</filter-name>
        <filter-class>com.news.action.util.FCKFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
      </servlet-mapping>
    </web-app>
      

  7.   

    这个空指针还没进去方法里面就抛出来的,所以debug没有呢,我想可能是拦截器的问题。
      

  8.   

    还没运行到action的方法的,所以我debug之后没有在断电停留,估计是拦截器出问题的
      

  9.   

    <action name="BbssectorAction" class="com.news.action.BbssectorAction" method="list"> 默认的是execute方法。
      

  10.   

    我这这样写的<a href="BbssectorAction!list.action">论坛</a>,所以不用加list的,以前的代码都是这样,没问题的哦。
      

  11.   

    我自定义的拦截器如下:
    package com.news.action.util;import java.io.IOException; import javax.servlet.FilterChain; 
    import javax.servlet.ServletException; 
    import javax.servlet.ServletRequest; 
    import javax.servlet.ServletResponse; 
    import javax.servlet.http.HttpServletRequest; 
    import org.apache.struts2.dispatcher.FilterDispatcher;
    @SuppressWarnings("deprecation")
    public class FCKFilter extends FilterDispatcher {
     public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException, ServletException {   
            HttpServletRequest request = (HttpServletRequest) req;  
            String URI = request.getRequestURI(); 
            String[] uriArray = URI.split("/ckfinder/core/connector/java/*/"); 
            int arrayLen = uriArray.length; 
            if (arrayLen >= 2) { 
                chain.doFilter(req, res);  
            }else { 
                super.doFilter(req, res, chain);   
            } 
        }  

    因为我要用到ckfinder,ckeditor来上传图片和在线编辑,所以弄了个这样的过滤器,不知这个有没有问题。