Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在html页面中使用,使用_Javascript_Google Maps_Aem_Sightly - Fatal编程技术网

Javascript 在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"

我正在尝试将谷歌地图添加到一个正在使用的组件中。该组件将允许用户选择一个资产,然后从资产属性中获取lat/long,然后在谷歌地图中用标记显示位置

我的googlemap.html页面目前包含以下内容

<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>