Javascript 在html页面中使用,使用
我正在尝试将谷歌地图添加到一个正在使用的组件中。该组件将允许用户选择一个资产,然后从资产属性中获取lat/long,然后在谷歌地图中用标记显示位置 我的googlemap.html页面目前包含以下内容Javascript 在html页面中使用,使用,javascript,google-maps,aem,sightly,Javascript,Google Maps,Aem,Sightly,我正在尝试将谷歌地图添加到一个正在使用的组件中。该组件将允许用户选择一个资产,然后从资产属性中获取lat/long,然后在谷歌地图中用标记显示位置 我的googlemap.html页面目前包含以下内容 <div data-sly-use.ev="Google" class="${ev.cssClass || ''}" title="${ev.title || ''}" data-emptytext="Evernote Asset"
<div data-sly-use.ev="Google"
class="${ev.cssClass || ''}"
title="${ev.title || ''}"
data-emptytext="Evernote Asset"
id="${ev.googleClass || ''}"
>
</div>
<style>
#map-canvas {
width: 500px;
height: 400px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
var mapCanvas = document.getElementById('map-canvas');
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var mapOptions = {
center: myLatlng,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(mapCanvas, mapOptions)
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
问题:
如您所见,我已经硬编码了lat/long。如何使用getter而不是硬编码从java类中获取lat/long
我尝试了以下方法,但不起作用
<div data-sly-use.ev="GoogleMap"
class="${ev.cssClass || ''}"
title="${ev.title || ''}"
data-emptytext="Evernote Asset"
id="${ev.googleClass || ''}"
>
<style>
#map-canvas {
width: 500px;
height: 400px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
var mapCanvas = document.getElementById('map-canvas');
var myLatlng = new google.maps.LatLng("${ev.lat || ''}","${ev.lng || ''}");
var mapOptions = {
center: myLatlng,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(mapCanvas, mapOptions)
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</div>
Javascript在浏览器中运行客户端,因此通常不会与运行服务器端的Java代码交互。您可能希望将Java方法公开为RESTful API端点,并在Javascript代码中执行AJAX调用 请参阅:ajax教程 其他方法是在服务器端创建对象,并从会话或一些静态函数中公开该对象,然后您可以使用JSPServlet语法访问该对象
<LI>Curent time: <%= new java.util.Date() %>
<LI>Host name: <%= request.getRemoteHost() %>
<LI>ID sesion: <%= session.getId() %>
</UL>
<% deleteconfig deletecfg = new deleteconfig(); %>
<%= delectecfg.initiate(); =%>
</BODY>
</HTML>
JSP脚本元素包括:
表达式:对表达式求值并打印出文档
Scriptlet将代码插入servlet服务方法
语句:代码插入到servlet类中,在任何方法之外
对于JSP,可以使用脚本元素和另一种基于XML标记的语法形式:
<jsp:expression> Java expression </ jsp: expression>
<jsp:scriptlet> Java code </ jsp: scriptlet>
<jsp:declaration> Statement Java </ jsp: declaration>
我更喜欢使用restFul API的第一种方法。这将是一种更干净的方法明显地提供了XSS保护。因此,为了计算表达式,应该使用上下文
${ev.lat@context=scriptString}为了清晰起见-在HTML上下文中,Sightly通常能够确定要应用的正确XSS保护上下文。然而,在脚本或样式标记内部,解析器无法找出正确的保护上下文,因此需要手动指定一个上下文,如Anthony的示例所示。日志中也会出现与这些行相关的消息。
<jsp:expression> Java expression </ jsp: expression>
<jsp:scriptlet> Java code </ jsp: scriptlet>
<jsp:declaration> Statement Java </ jsp: declaration>