2016-09-27 13 views
1

私はアプリケーションIDとバージョンを管理するためにプロパティファイルを使用しています。ここFacebook javascript SDKプロパティファイルからjspへのバージョンを共有できません[webapp]

は、プロパティファイルである:

#Facebook APP ID & Version 

#My Local 
facebookShareAppId = xxxxxxxxxxx 

#UAT 
#facebookShareAppId = xxxxxxxxxxx 

#QA 
#facebookShareAppId = xxxxxxxxxxx 


facebookShareVersion = v2.7 

============================

I私たちのユーティリティを使用して、コントローラからのプロパティの値を取得しています、私のコントローラメソッドはこれを持っている:

String facebookAppId = PropertyFileReader.getProperty(PropertyFileConstants.PROP_SOCIALNETWORK, "facebookShareAppId"); 
String facebookShareVersion = PropertyFileReader.getProperty(PropertyFileConstants.PROP_SOCIALNETWORK, "facebookShareVersion"); 

page.addObject("facebookAppId", facebookAppId); 
page.addObject("facebookShareVersion", facebookShareVersion); 
return page; 

======================= =====

My JSP then get sの値を、私はそれをログに記録しようとすると、それは$ {facebookAppId}と$ {} facebookShareVersion

<input id="facebookAppId" type="hidden" value = "${facebookAppId}"/> 
<input id="facebookShareVersion" type="hidden" value = "${facebookShareVersion}"/> 

を使用してチェックするとき、それは私の現在のfacebookAppIdの値、およびfacebookShareVersionを表示します。私はこれを入力すると、それは私を与える

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : ${facebookAppId}, 
     xfbml  : true, 
     version : ${facebookShareVersion} 
    }); 
    }; 

</script> 

=====================(現在のバージョンは、 "V2.7" です)エラー:「キャッチされていないエラー:無効なバージョンが指定されました」が、静的な文字列「v2.7」にバージョンを変更すると機能します。 これを修正する方法については何ですか?

私は、この(私は実際にそれが何をするか分からない)もあります:

<div id="fb-root"></div> 
      <script>(function(d, s, id) { 
      var js, fjs = d.getElementsByTagName(s)[0]; 
      if (d.getElementById(id)) return; 
       js = d.createElement(s); js.id = id; 
       js.src = "//connect.facebook.net/en_US/sdk.js"; 
       fjs.parentNode.insertBefore(js, fjs); 
      }(document, 'script', 'facebook-jssdk')); 
      </script> 
          <!-- Your share button code --> 
      <div class="fb-share-button" data-href="http://www.google.com/" data-layout="button" data-size="large" data-mobile-iframe="true"></div> 

編集:私はSDKの第2の埋め込みを削除

+0

から取得することができます今

<input id="facebookAppId" type="hidden" value = "${facebookAppId}"/> <input id="facebookShareVersion" type="hidden" value = "${facebookShareVersion}"/> <script> window.fbAsyncInit = function() { FB.init({ appId : ${facebookAppId}, xfbml : true, version : ${facebookShareVersion} }); }; </script> 

Javascriptを::

var appId = $("#facebookAppId").val(); var version = $("#facebookShareVersion").val(); (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version="+ version + "&appId=" + appId; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); 

JSP最終的なコードは次のようになりますクライアントは次のように見える? – CBroe

+0

私はこんなに新しいことを申し訳なく思っています。それはどういう意味ですか? @CBroe – EdSniper

+0

あなたのブラウザが受け取る実際のHTMLコードを見て、プレースホルダが実際の変数の内容に置き換えられていることを確認する必要があります。 // SDKを2回埋め込んではいけません。問題を尋ねています。もう1つを削除します。 – CBroe

答えて

1

上記のコードを追加し、私にそれを転送しますJavascriptは、js.srcを微調整し、JSPの隠し要素からバージョンとappIdを追加しました。バージョンとのAppIDが、そのHTMLコードを何プロパティファイル:)

関連する問題