错误页面:Struts Problem Report
Struts has detected an unhandled exception: Messages:  
File: willow/business/code/action/CodeAction.java 
Line number: 28 
--------------------------------------------------------------------------------Stacktraces
java.lang.NullPointerException 
    willow.business.code.action.CodeAction.execute(CodeAction.java:28)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept
。省略    
相关代码:
package willow.business.code.action;import java.util.List;import org.apache.log4j.Logger;
import org.springframework.beans.factory.BeanFactory;import willow.business.code.CodeForm;
import willow.data.code.ICodeData;
import willow.entity.code.Code;/**
 * Filename: CodeAction.java
 */
public class CodeAction extends CodeForm { private static final long serialVersionUID = 5371213145339553692L;
static Logger logger = Logger.getLogger(CodeAction.class);

public String execute() throws Exception {
String input = INPUT; CodeForm cf = new CodeForm();
cf.setCode(getCode());
cf.setUpid(getUpid()); BeanFactory bf = (BeanFactory)getBeanFactory();
ICodeData cd = (ICodeData)bf.getBean("codedata");
List<Code> list = cd.getCodes(bf,null,cf);
logger.info(list.size());
getRequest().setAttribute("list", list);
input = SUCCESS;
return input;
}
}
applicationContext.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- Filename: applicationContext.xml -->
<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.connection.autocommit">true</prop>
      </props>
    </property>
  </bean>  <bean id="codedao" class="willow.dao.hibernate.code.CodeDao">
    <property name="sessionFactory">
      <ref bean="sessionFactory" />
    </property>
  </bean>
  <bean id="codedata" class="willow.data.hibernate.code.CodeData"></bean>  <bean id="appraisedao" class="willow.dao.hibernate.science.AppraiseDao">
    <property name="sessionFactory">
      <ref bean="sessionFactory" />
    </property>
  </bean>
  <bean id="appraisedata" class="willow.data.hibernate.science.AppraiseData"></bean>
  <!-- Define IoC beans 
  <bean id="dao" class="willow.dao.c3p0.C3p0Dao"></bean>
-->
  <!-- Define AOP advice 
  <bean id="daoInterceptor" class="willow.data.advice.DaoInterceptor"></bean>
-->
  <!-- Define AOP target 
  <bean id="studentdata-target" class="willow.data.mysql.StudentData"></bean>
-->
  <!-- Define AOP proxy factory bean, invocation bean 
  <bean id="studentdata" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces">
      <value>willow.data.mysql.IStudentData</value>
    </property>
    <property name="interceptorNames">
      <list>
        <value>daoInterceptor</value>  
      </list>
    </property>
    <property name="target">
      <ref bean="studentdata-target"/>
    </property>
  </bean>-->  <!--                     Hibernate                
 -->
</beans>