2016-04-12 16 views
0

JSP sayfam için bir sayı biçimi değiştirici geliştiriyorum. Komut dosyası tarafından işlenen bazı miktarlarım var. Çoğunlukla olmak üzere 2 sembol içeren "userThousandSeparator" ve "userDecimalSeparator" olmak üzere 2 oturum değişkenim var. ve ,.Harici JavaScript dosyasında oturum değişkenleri çağrısı

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(); 
}); 

Şimdi sorun şu:

JSP dosya yapısı

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

umberFormatting.js seans değişkenler tarafından bin ve ondalık ayırıcılar takas kodunu aşağıdakileri içerir n takip etti Bunu jpeumda <script> etiketleri arasına eklediğimde, bu mükemmel çalışır. Ama şimdi bu betiği ayrı bir dosyaya eklemek istiyorum, bu yüzden bunu birden fazla jsp, için kullanabilirim ama şimdi sorunlarım var.

Örneğin sayı 500,005.00500 $ {sessionScope.userThousandSeparator} 005 $ {sessionScope.userDecimalSeparator} 00

neden komut oturum değişkenleri artık bilmiyor ve nasıl düzeltmek için biçimlendirilmiş alır bu?

cevap

1

JS komut dosyanız, numaralı tarayıcısına aktarılmıştır. JSP olmadığı için, EL'yi orada kullanamazsınız. Açıkçası, işlenmemiş ve aynı zamanda, betikte olarak eklenmiştir.

Ya

  • az ya da çok global değişkenlerin tanımlanması ve
  • sizin JS HTML sayfasındaki kod gömmek sizin JS kod onları alabilirsiniz - çağrıları gibi, en azından ya yapılandırılabilir bölüm
  • 'a gereksinim duyduğunuz işlev parametreleri kabul etmek için handleNumericFields işlevinizi değiştirir - örn. thousandsSeparator ve decimalSeparator. Hatta sadece locale
  • bir JSP olarak JS dosyasını uygulamak - ama sonra ben parametreleri tanıtmak tavsiye ederim (örn önerilmez)

Mümkünse önbelleğe alma proxy ile dikkatli olmak gerekir işlev. Ya da, sadece "ayırıcı" gibi yapılandırma benzeri değerler olsalar, global değişkenlerle birlikte olabilirsiniz. Güzel değil, ama iş yapıyor.

İlgili konular