java.lang.NullPointerException: No JFreeChart object found on the stack with name chart
org.apache.struts2.dispatcher.ChartResult.doExecute(ChartResult.java:189)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java

解决方案 »

  1.   

    struts.xml<package name="struts2" extends="jfreechart-default"><action name="viewResult" class="com.action.ViewJFreeChartAction">
    <result name="success" type="chart">
    <param name="height">800</param>
      <param name="width">1000</param>
    </result>
    </action>
      

  2.   

    actionpackage com.action;import java.awt.Font;
    import java.util.List;
    import java.util.Map;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryLabelPositions;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.title.TextTitle;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class ViewJFreeChartAction extends ActionSupport {private JFreeChart chart;
    private List<String> list;@Override
    public String execute() throws Exception {
    // TODO Auto-generated method stub
    return SUCCESS;
    }@SuppressWarnings("unchecked")
    public void increateResult(List<String> list){
    ActionContext context = ActionContext.getContext();Map map = context.getApplication();for(String str : list){
    if(null == map.get(str)){
    map.put(str, 1);
    }else{
    map.put(str, (Integer)map.get(str)+1);
    }
    }
    }public CategoryDataset getDataset(){
    DefaultCategoryDataset dpd = new DefaultCategoryDataset();this.increateResult(this.getList());ActionContext context = ActionContext.getContext();
    Map map = context.getApplication();dpd.setValue((Integer)map.get("football"), "", "足球");
    dpd.setValue((Integer)map.get("basketball"), "", "蓝球");
    dpd.setValue((Integer)map.get("velleyball"), "", "排球");
    dpd.setValue((Integer)map.get("badminton"), "", "羽毛球");return dpd;
    }
    public JFreeChart getChart() {JFreeChart chart = ChartFactory.createBarChart("爱好", "项目", "数量", this.getDataset(),
    PlotOrientation.VERTICAL, false, false, false);chart.setTitle(new TextTitle("兴趣爱好",new Font("楷书",Font.ITALIC+Font.BOLD,32)));CategoryPlot plot = (CategoryPlot)chart.getPlot();CategoryAxis categoryAxis = plot.getDomainAxis();categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);categoryAxis.setLabelFont(new Font("隶书",Font.BOLD,22));NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();numberAxis.setLabelFont(new Font("宋体",Font.BOLD,22));return chart;
    }public void setChart(JFreeChart chart) {
    this.chart = chart;
    }public List<String> getList() {
    return list;
    }public void setList(List<String> list) {
    this.list = list;
    }