0

これが私のview.jspです。これはGoogleの単なる例です。先に進む前に、これを表示したかっただけです。

<%@ include file="/init.jsp" %>

    <p>
        <b><liferay-ui:message key="mapsportlet_mapsPortletmvcportlet.caption"/></b>
    </p>

<DOCTYPE! html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      html, body {
        height: 20%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 20%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var map;
      function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
          center: {lat: -34.397, lng: 150.644},
          zoom: 8
        });
      }
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDeekwNluL4ssJ3QAFGPSkFHYYQvZoNbVM&callback=initMap"
    async defer></script>
  </body>
</html>

localhost:8080 で liferay 7 のローカル インスタンスを実行しています。API キーが正しく設定されておらず、JavaScript コンソールで拒否されていることを確認できたため、JavaScript が起動していると思います。API キーを修正した後、ブラウザーのコンソールにエラーが表示されなくなりましたが、ポートレットにマップが表示されません。

view.jsp に何か問題がありますか? または、これについて別の方法がありますか?

4

1 に答える 1

1

この質問に「liferay」のタグを付けているので、投稿した JSP をポートレットのビューとして使用していると思います。このマークアップはポータルによって追加されるため、ポートレットには<html>, <head>orを含めてはなりません。<body>

IDにも注意してmapください。同じポートレットをページに 2 回追加すると、HTML 要素 ID が重複するだけでなく、機能しなくなります。これが問題になる場合は<portlet:namespace/>、識別子を一意にするために使用します。他のポートレットがこの ID を既に追加している場合も試してみてください。この ID が現在どこで既に使用されているかによっては、見えないだけで既に機能している可能性があります。

また、<style>余分な<html><head>セクションに含まれている場合、意志が無視されるか無視されないかどうかはわかりません。<div>適切な高さで明示的にスタイリングしてみてください。

于 2016-08-25T10:12:48.847 に答える