2016-04-12 17 views
0

私はJSPページの数値書式チェンジャーを開発しています。 私はスクリプトによって操作されるいくつかの金額を持っています。私は2つのセッション変数 "userThousandSeparator"と "userDecimalSeparator"を持っています。これは2つのシンボルを含み、ほとんどがです。および,外部JavaScriptファイルのセッション変数を呼び出す

JSPファイルは構造

<html> 
    <body> 
    ... 
    <span class="list-group-item list-group-item-sm">Instructed amount<span class="pull-right"><em id="instructedAmount"class="numberField">${instructedAmount}</em> <em id="instructedAmountCurrency">${instructedAmountCurrency}</em></span></span> 

    <span class="list-group-item list-group-item-sm">Counter value amount<span class="pull-right"><em id="counterValueAmount class="numberField">${counterValueAmount}</em> <em id="counterValueAmountCurrency">${counterValueAmountCurrency}</em></span></span> 
    ... 
    <script src="js/numberFormatting.js"></script> 
    </body> 
    </html> 

N umberFormatting.jsを以下ましたが、セッション変数によって千と小数点の記号を交換するために、次のコードが含まれています。

function handleNumericFields(){ 
      $('.numberField').each(function(){ 
      var amount = $(this).text(); 
      var splittedValues = amount.split(/[,.]/); 
      amount = ""; 

      for(var i=0 ; i < (splittedValues.length - 1) ; i++){ 
       amount += splittedValues[i]; 

       if(i < (splittedValues.length - 2)) { 
        amount += "${sessionScope.userThousandSeparator}"; 
       } 
      } 
      amount += "${sessionScope.userDecimalSeparator}"; 
      amount += splittedValues[splittedValues.length - 1] 
      $(this).text(amount); 
     }); 
} 

$(document).ready(function() { 
    handleNumericFields(); 
}); 

さて問題はさこれを私のJSPで<script>タグの間に追加すると、これは完全に動作します。しかし今、私はこのスクリプトを別々のファイルに追加したいので、これを複数のJSPの に使うことができますが、今は問題があります。

は、例えば数500,005.00500 $ {} sessionScope.userThousandSeparator 005 $ {} sessionScope.userDecimalSeparator 00

はなぜ私のスクリプトは、セッション変数をもう知っていないとどのように修正するようにフォーマットされますこの?

答えて

1

あなたのJSスクリプトはのようにブラウザに転送されます。 JSPではないので、そこでELを使うことはできません。明らかに処理されておらず、ちょうどがスクリプトにとして追加されています。への呼び出しのように、または少なくとも、構成部分 - あなたはどちらか

  • 多かれ少なかれグローバル変数を定義し、あなたのJSコードで
  • それらを拾うことができ

    は、あなたのJSのHTMLページにコードを埋め込みますあなたが必要とする機能

  • あなたのhandleNumericFields関数をパラメータを受け入れるように変更する - 例えばthousandsSeparatorおよびdecimalSeparator。あるいは単にlocale
  • JSPとしてあなたのJSファイルを実装 - (例えば推奨されません)しかし、あなたは、キャッシングプロキシと注意する必要があるだろう

可能ならば、私はにパラメータを導入することをお勧めしたいです関数。あるいは、「セパレータ」のような構成に似た値だけが存在する場合は、グローバル変数を使用するかもしれません。きれいではないが、仕事をする。