2013-05-07 48 views
2

有沒有什麼辦法可以執行一個ui:在javascript裏面重複?這就是我想要做的。ui:重複裏面的一個javascript

var point; 
<ui:repeat value="#{testController.allItems}" var="item"> 
    point = new google.maps.LatLng(item.latitude,item.longitude); 
    createMarker(point, item.name, item.desc); 
</ui:repeat> 

testController.allItems返回經度和緯度等價值實體的名單,我試圖做使用谷歌地圖商店定位器。 createMarker向地圖添加標記。

還是有更好的方法來做到這一點?

+0

考慮添加一個簡單的REST服務,只需獲取數據並在js中解析它。你正在執行的方法是非常噁心。 – 2014-06-04 16:28:34

回答

1

您可以嘗試(另一種選擇:c:forEach):

 <script type="text/javascript"> 
       var point; 
       <ui:repeat value="#{s9.list}" var="item"> 
        point = new google.maps.LatLng(#{item.latitude},#{item.longitude}); 
        createMarker(point, #{item.name}, #{item.desc}); 
       </ui:repeat> 
     </script> 

如果你的函數需要字符串參數,你應該使用',爲前:

google.maps.LatLng('#{item.latitude}','#{item.longitude}'); 
    createMarker(point, '#{item.name}', '#{item.desc}'); 
+0

謝謝!簡單'''''和'#{}'是解決我的錯誤的方法! – galao 2013-05-07 03:06:51

+0

歡迎您:) – 2013-05-07 03:09:16

+2

如果您使用_java_代碼生成_javascript_代碼,最好將其移至JSF複合組件。這是一個更可重用的做法。你可以看看[Oracle教程](http://docs.oracle.com/javaee/6/tutorial/doc/giqzr.html)和[BalusC](http://stackoverflow.com/questions/6359042/execute- javascript-from-a-composite-component)示例。問候, – 2013-05-07 12:49:44

0

我有這個問題(C :forEach也不會工作)。使用<h:outputScript>標籤而不是<script>標籤解決了問題。通過使用<h:outputScript>標籤,我可以使用ui:repeat