在项目中使用了struts2,所以JSP页面中有很多struts标签。做报表时用到fusioncharts了,后台拼接好xml流,通过request对象传到jsp页面,用s:property直接获取,如<s:property value="model.chartXml"/>,jsp页面中得到相应的字符串
,能得到xml流的内容。但是需要在JS中设置setDataXML时,页面不显示任何图表。
JS代码段:
var chart = new FusionCharts('charts/FCF_Pie2D.swf', "ChartId", "400", "300");  
    var dataxml=<s:property value="model.chartXml"/>;
    chart.setDataXML(dataxml); 
    chart.render('Pie');   本人对JS获取值的问题不是很清楚,网上也有说是xml流中带有中文不行,我把xml流中的中文去掉,也没法显示。但是我把xml中的内容直接加载到chart.setDataXML(dataxml)中时,可以显示出图表。例如:
chart.setDataXML(“<graph baseFont='SunSim' baseFontSize='12' captio。”),这么写可以显示的。
所以怀疑是不是setDataXML方法没有获取到<s:property value="model.chartXml"/>中的内容,如果要获取,该怎么写?

解决方案 »

  1.   

    后台直接拼成字符串返回到页面,var dataxml=${xmlStr}
      

  2.   

    在后台写个String xmlStr,get、set方法?
      

  3.   

    setDataXML方法只需要接受从后来返回来的字符串就可、
    setURLXML方法才是就收XML流的、
      

  4.   

    原来这样的啊,我原先都不知道setURLXML的存在的,汗~
      

  5.   

    主要是对JS获取值不是太理解,比如${xmlStr}这样的方式获取的是什么值呢?是后台名为xmlStr的变量的值?
      

  6.   

    还是没能解决问题,${xmlStr}获取不到值。我尝试用request对象去传,put了2组值。一组是我想传的那个xml内容的值,比较长,带有中文。然后自己再put一组变量,“123456你好”。结果在页面用${demol.xmlStr1}和{demol.xmlStr2}分别去获取时,“123456你好”就可以获取到,而长的那个就是获取不到。我在后台打印了下长的那个xml字符串,明明是有值的。
    这是为什么?难道EL对长度还有控制?