javascript数组和jsf/richfaces

javascript数组和jsf/richfaces,java,javascript,jsf,richfaces,Java,Javascript,Jsf,Richfaces,我有以下javascript代码: <script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/js/sample-points.js"></script> <script type="text/javascript">//<![CDATA[ var cloud

我有以下javascript代码:

        <script type="text/javascript"
            src="#{facesContext.externalContext.requestContextPath}/js/sample-points.js"></script>

        <script type="text/javascript">//<![CDATA[
            var cloudmade = new CM.Tiles.CloudMade.Web({key: 'bbb'});
            var map = new CM.Map('cm-example', cloudmade);
            map.setCenter(new CM.LatLng(51.50874, 22.76367), 4);

            var markers = [];
            for (var i = 0; i < samplePoints.length; i++) {
                markers.push(new CM.Marker(new CM.LatLng(samplePoints[i][0], samplePoints[i][1])));
            }

            var clusterer = new CM.MarkerClusterer(map, {clusterRadius: 70});
            clusterer.addMarkers(markers);
        //]]></script>

//
“采样点”是一个坐标数组,我可以用它在地图上显示标记

地图如下所示:

<div id="cm-example" style="width: 99.5%; height: 600px"></div>

如何从jsf/richfaces中提供这个数组而不使用文件(例如,我想从db中获取这些数据,创建数组并发送到此脚本)

谢谢

看到了吗


使用jsFunction,您可以加载任何数据结构(例如点),在客户端,您可以得到一个javaScript数据结构,您可以轻松访问它(point.x)。

只要让JSF打印它,就像它是javaScript代码一样

替换

var markers = [];
for (var i = 0; i < samplePoints.length; i++) {
    markers.push(new CM.Marker(new CM.LatLng(samplePoints[i][0], samplePoints[i][1])));
}
var标记=[];
对于(变量i=0;i
通过(假设Facelets)

var标记=[];
markers.push(新CM.Marker(新CM.LatLng(#{samplePoint[0]},#{samplePoint[1]}));

其中
#{bean.samplePoints}
返回一个
列表
或其他东西。

你说的“假设Facelets”是什么意思?JSF可以在旧JSP或其后续Facelets(基于XML)上使用。
在旧JSP中不可用。如果您在XHTML文件中使用JSF2.0,那么您肯定在使用Facelets。那是不是意味着我不能用?你可以用它。您有一个
xmlns:ui=”http://java.sun.com/jsf/facelets“
在根标记声明中,对吗?是的,我有,但是当我尝试执行代码的那部分时,我认为我永远不会到达循环(或者ui中的行:repeat)。我得到了生成的代码:
markers.push(new CM.Marker(new CM.LatLng)(samplePoint[0],samplePoint[1])Bean:
私有列表采样点@创建公共void init(){String[]a=新字符串[2];a[0]=“50.439750076928”;a[1]=“30.6139826774597”;samplePoints.add(a);}。。。getter setter