﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-java神谕-随笔分类-WEBWORK</title><link>http://www.blogjava.net/javaora/category/9825.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 18:25:47 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 18:25:47 GMT</pubDate><ttl>60</ttl><item><title>JFreechartResult</title><link>http://www.blogjava.net/javaora/archive/2006/04/11/40420.html</link><dc:creator>java世界畅谈</dc:creator><author>java世界畅谈</author><pubDate>Tue, 11 Apr 2006 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/javaora/archive/2006/04/11/40420.html</guid><wfw:comment>http://www.blogjava.net/javaora/comments/40420.html</wfw:comment><comments>http://www.blogjava.net/javaora/archive/2006/04/11/40420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javaora/comments/commentRss/40420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javaora/services/trackbacks/40420.html</trackback:ping><description><![CDATA[
		<p>
				<strong>Intro</strong>
		</p>
		<p>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.</p>
		<p>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.</p>
		<p>
				<strong>Configuration</strong>
				<br />
				<strong>xwork.xml -result-types definitions</strong>
				<br />&lt;result-types&gt;<br />   &lt;result-type name="chart" class="myapp.webwork.extensions.chartResult"/&gt;<br />&lt;/result-types&gt;<br /><strong>xwork.xml -action definitions</strong><br />&lt;action name="viewModerationChart" class="myapp.webwork.actions.ViewModerationChartAction"&gt;<br />   &lt;result name="success" type="chart"&gt;<br />      &lt;param name="width"&gt;400&lt;/param&gt;<br />      &lt;param name="height"&gt;300&lt;/param&gt;<br />   &lt;/result&gt;<br />&lt;/action&gt;</p>
		<p>
				<strong>Source Codes</strong>
				<br />My result class search for a "chart" in the ValueStack and renders it out...</p>
		<p>public class ChartResult implements  Result{<br />   private int width;<br />   private int height;<br />   public void execute(ActionInvocation invocation)throws Exception{<br />     <strong>  JFreeChart chart = (JFreeChart)invocation.getStack().findValue("chart");<br /></strong>       HttpServeletResponse response = ServeletActionContext.getResponse();<br />       OutputStream os = response.getOutputStream();<br />       ChartUtilities.writeChartAsPNG(os,chart,width,height);<br />       os.flush();<br />   }<br />      <br />   public void setHeight(int height){<br />     this.height=height;<br />   }<br />   <br />   public void setWidth(int width){<br />     this.width=width;<br />   }<br />}</p>
		<p>public class ViewModerationChartAction extends ActionSupport{<br />   private JFreeChart chart;<br />   <br />   public String execute() throws Exception{<br />      //chart creation logic ...<br />      XYSeries dataSeries = new XYSeries(new Integer(1));<br />      for(int i=0;i&lt;=100;i++){<br />         dataSeries.add(i,RandomUtils.nextInt());<br />      }<br />      <br />      XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);<br />      ValueAxis xAxis = new NumberAxis("Raw Marks");<br />      ValueAxis yAxis = new NumberXxis("Moderated Marks");<br />      <br />      chart = new JFreeChart(<br />                      "Moderation Function",<br />                      JFreeChart.DEFAULT_TITLE_FONT,<br />                      new XYPlot(<br />                            xyDataset,<br />                            xAxis,<br />                            yXis,<br />                            new <br />           StandardXYItemRenderer(StandardXYItemRender.LINES),<br />                            false                 <br />                      );<br />                      ...<br />      )<br />   }<br />   <br />   public JFreeChart getChart(){<br />      return chart;<br />   }<br />}</p>
<img src ="http://www.blogjava.net/javaora/aggbug/40420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javaora/" target="_blank">java世界畅谈</a> 2006-04-11 11:55 <a href="http://www.blogjava.net/javaora/archive/2006/04/11/40420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>