Oracle神谕

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  284 随笔 :: 9 文章 :: 106 评论 :: 0 Trackbacks

Intro

I am rendering a chart to the output stream. Instead of streaming it directly to the response.out, I create a ChartResult , and let webwork do the chaining for me.

I generate the chart in one class, and I render it out in another class, efftectively decoupling the view from the actions. You can easily render it out to file or some view other than a web response.out if you wish.

Configuration
xwork.xml -result-types definitions
<result-types>
   <result-type name="chart" class="myapp.webwork.extensions.chartResult"/>
</result-types>
xwork.xml -action definitions
<action name="viewModerationChart" class="myapp.webwork.actions.ViewModerationChartAction">
   <result name="success" type="chart">
      <param name="width">400</param>
      <param name="height">300</param>
   </result>
</action>

Source Codes
My result class search for a "chart" in the ValueStack and renders it out...

public class ChartResult implements  Result{
   private int width;
   private int height;
   public void execute(ActionInvocation invocation)throws Exception{
       JFreeChart chart = (JFreeChart)invocation.getStack().findValue("chart");
       HttpServeletResponse response = ServeletActionContext.getResponse();
       OutputStream os = response.getOutputStream();
       ChartUtilities.writeChartAsPNG(os,chart,width,height);
       os.flush();
   }
     
   public void setHeight(int height){
     this.height=height;
   }
  
   public void setWidth(int width){
     this.width=width;
   }
}

public class ViewModerationChartAction extends ActionSupport{
   private JFreeChart chart;
  
   public String execute() throws Exception{
      //chart creation logic ...
      XYSeries dataSeries = new XYSeries(new Integer(1));
      for(int i=0;i<=100;i++){
         dataSeries.add(i,RandomUtils.nextInt());
      }
     
      XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);
      ValueAxis xAxis = new NumberAxis("Raw Marks");
      ValueAxis yAxis = new NumberXxis("Moderated Marks");
     
      chart = new JFreeChart(
                      "Moderation Function",
                      JFreeChart.DEFAULT_TITLE_FONT,
                      new XYPlot(
                            xyDataset,
                            xAxis,
                            yXis,
                            new
           StandardXYItemRenderer(StandardXYItemRender.LINES),
                            false                
                      );
                      ...
      )
   }
  
   public JFreeChart getChart(){
      return chart;
   }
}

posted on 2006-04-11 11:55 java世界畅谈 阅读(303) 评论(0)  编辑  收藏 所属分类: WEBWORK

只有注册用户登录后才能发表评论。


网站导航: