日期:2014-05-20  浏览次数:20762 次

jfreechart为什么没生成连接
我是在struts框架里面做的,不知道jsp页面里面为什么没生成连接,请大家帮帮忙。
action代码如下。
Java code


public final class ViewProcessOrderAction extends Action{  
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,  
        HttpServletResponse response) throws Exception {
    
           DynaActionForm searchForm = (DynaActionForm) form;         
        String keyword = (String)searchForm.get("keyword");
        Integer pageId = (Integer)searchForm.get("pageId");
        HttpSession session = request.getSession(true);
        
        List processOrdertList=new DBOperate().getMatchProcessOrders(keyword);
        
        if (processOrdertList.size()==0){           
            ActionErrors errors = new ActionErrors();
            errors.add(ActionErrors.GLOBAL_MESSAGE,
                new ActionError("errors.noMatch"));
            if (!errors.isEmpty()) {
                saveErrors(request, errors);
            } 
              return  mapping.findForward("toWrong");  
        }
        
        else{
            response.setContentType("text/html;charset=GBK"); 
            PrintWriter out = response.getWriter();  

            DefaultPieDataset data = new DefaultPieDataset();
            
            for(int i=0;i<processOrdertList.size();i++){
                Order order = (Order)processOrdertList.get(i);
                data.setValue(order.getTime(), order.getPrice());
            }

            PiePlot3D plot = new PiePlot3D(data);//3D饼图 
            plot.setURLGenerator(new StandardPieURLGenerator("barview.jsp"));//设定链接 
            JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true); 
            chart.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色 
            chart.setTitle("订单调查表");//可选,设置图片标题 
            plot.setToolTipGenerator(new StandardPieToolTipGenerator()); 
            StandardEntityCollection sec = new StandardEntityCollection(); 
            ChartRenderingInfo info = new ChartRenderingInfo(sec); 
            PrintWriter w = new PrintWriter(out);//输出MAP信息 
            //500是图片长度,300是图片高度 
            ChartUtilities.writeImageMap(w, "map0", info, false);
            String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session); 

            String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; 

            request.setAttribute("filename", filename); 
            request.setAttribute("graphURL", graphURL); 
            ViewList viewList=new ViewList();
            viewList.display (processOrdertList,session,pageId,keyword) ;
               return (mapping.findForward("toListProcessOrder"));                    
        }
     }
}




jsp代码如下

Java code


      <P ALIGN="CENTER">
      <%Object graphURL=request.getAttribute("graphURL"); %>
      <%Object filename=request.getAttribute("filename"); %> 
      <img src="<%= graphURL.toString() %>" width=500 height=300 border=0 usemap="#map0"> 
      <%= graphURL.toString()%>
      </P>



先谢谢啦

------解决方案--------------------
如果你项目统一都设置了utf-8,我想你的应该没问题

我的这个项目没有统一设置utf-8,项目里用的是编码转换的方法,但是方法考虑了不太周到,就会出现问题。

说一下我的解决方法
因为生成的map在输出的时候,编码用的是utf-8,生成map的时候不需要加任何的转换,然后你会看到热区上的带中文的参数都是一堆百分号,这个没事,接下来,你就要用request来获取这个参数,再次强调用一下,如果你项目统一用的是utf-8,那么你获取之后的值应该是正确的

我的没有设置,默认的字符集是iso-8859-1,所以需要把iso-8859-1再转成utf-8
只需按下面的就ok了
String pars = request.getParameter("map中传过来的带百分号的中文参数");