Невозможно реализовать ModelDriven или ServletRequestAware в классе действий Struts 2 с использованием JFree

Я пытаюсь создать диаграмму на основе пользовательского ввода. Я использую JFree Charts в структуре Struts 2. В классе действий для создания диаграмм я не могу реализовать концепцию ModelDriven; Я также не могу получить значения параметров из объекта HttpServletRequest. .

Если я вызову класс действий по созданию диаграммы с реализацией ModelDriven или ServletRequestAware, он будет работать нормально, но отобразит диаграмму на следующей странице. Мне нужно создать диаграмму на основе пользовательского ввода.

Мне не удалось найти информацию о JFree и Struts 2; любые полезные ссылки на учебники также будут оценены.

это мой 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>
<package name="jfree" extends="jfreechart-default">
            <action name="chartAction" class="com.kogent.action.ChartAction">
                <result name="success" type="chart">
                    <param name="width">500</param>
                    <param name="height">300</param> 
                </result>
            </action>
    </package>          
</struts>

и это мой класс действий

package com.kogent.action;

import java.util.Random;

import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;

import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

public class ChartAction extends ActionSupport implements ModelDriven<FormBean>,Preparable{

    private JFreeChart chart;
    private FormBean bean;

    @Override
    public FormBean getModel() {
        // TODO Auto-generated method stub
        return bean;
    }
    @Override
    public void prepare() throws Exception {
        // TODO Auto-generated method stub
        bean=new FormBean();
    }



    public String execute() throws Exception {
        // chart creation logic...
        System.out.print(bean.getCategory()+"    "+bean.getChartType());
        //if remove this above line my action runs fine but i require this vales from the user
        XYSeries dataSeries = new XYSeries(new Integer(1)); 
        for (int i = 0; i <= 100; i++) {

            dataSeries.add(i, new Random().nextInt(50));
        }

        XYSeriesCollection xyDataSet = new XYSeriesCollection(dataSeries);

        ValueAxis xAxis = new NumberAxis("Marks");
        ValueAxis yAxis = new NumberAxis("Age");
        chart =
            new JFreeChart("Chart Title", JFreeChart.DEFAULT_TITLE_FONT,
                new XYPlot(xyDataSet,xAxis, yAxis,
                        new StandardXYItemRenderer(StandardXYItemRenderer.LINES)),
                false);
        chart.setBackgroundPaint(java.awt.Color.white);

        return super.SUCCESS;
    }

    public JFreeChart getChart() {
        return chart;
    }
}

person CodeHunter    schedule 20.02.2013    source источник
comment
Пожалуйста, опубликуйте любой соответствующий код для вашего действия, включая ваш XML.   -  person JoshDM    schedule 20.02.2013
comment
в моем классе действий я просто реализую ModelDriven, а в файле struts.xml тег пакета расширяет jfreechart-default   -  person CodeHunter    schedule 20.02.2013
comment
@JoshDM, можешь посмотреть, я выложил коды   -  person CodeHunter    schedule 20.02.2013


Ответы (1)


Основываясь на этой диаграмме jfree, есть так много примеров, просто я даю эти ссылки, чтобы проверить это.

First: Для реализации любой диаграммы jfree не требуется ничего, кроме servlet request aware и servlet response aware, запрос предназначен для получения запроса от пользователя, а ответ - для предоставления вывода пользователю, вот и все. Это ваше желание использовать 'ModelDriven' interface ( it gains the extra ability to transfer the form data into the object automatically).

просто используйте эти ссылки.

Создавайте диаграммы и динамически отображайте их в JSP.

Создайте диаграмму с областями на странице JSP с помощью JFreeChart.

Создание круговых диаграмм с помощью JFreeChart

Уже обсуждение ведется только в переполнении стека

Это официальный сайт, который вам поможет

person Raki    schedule 20.02.2013
comment
создание диаграммы и их отображение не является проблемой, приятель, все, что нужно, это получить значение от пользователя через некоторую форму и получить их в моем классе действий, который следует структуре struts2 mvc, которую ни один из ваших примеров не показал. - person CodeHunter; 20.02.2013
comment
K. Воспользуйтесь этой ссылкой jfree chart. Здесь вы необходимо изменить, реализовать запрос сервлета в классе действий и заменить этим кодом. например: data.setValue("One", new Double(43.2)); здесь вместо двойного поставить request.getParameter("your string"); будет похоже data.setValue("One",request.getParameter("your string")) будет работать 100% - person Raki; 20.02.2013