2013-11-18 3 views
1

Я пытаюсь очистить приложение, написанное в jsp-сервлете и javascript, jquery. В настоящее время в jsp's написано много javascripts. Я пытаюсь переместить все эти javascripts в отдельный файл js. В jsp.pass bean variable to javascript

<% 
String firstName= ""; 

if (sampleBean.getName() != null) { 
    firstName = sampleBean.getName(); 
} 
%> 
<script type="text/javascript"> 
    window.onload=loadVal; 

    function loadVal() {  
    document.getElementById('business_name').value = "<%=firstName%>"; 
    } 
</script> 

Мне нужно переместить этот loadVal() в другой файл js. Итак, как я могу передать этот «<% = firstName%>», который извлекается из компонента?

ответ

-1
<% 
String firstName= ""; 
if (sampleBean.getName() != null) { 
    firstName = sampleBean.getName(); 
} 
%> 
<script type="text/javascript"> 
var firstName = <%= firstName %>; // assigning java variable to javascript variable 
</script> 

Напишите выше код в начале вашего jsp и переместите все ваши js в отдельный файл.

<script type="text/javascript"> 
    window.onload=loadVal; 

    function loadVal() {  
    document.getElementById('business_name').value = firstName; 
    } 
</script> 

Теперь вам нужно, чтобы убедиться, что вы включили, что JS файл после этого кода:

<script type="text/javascript"> 
    var firstName = <%= firstName %>; 
</script> 
0

Try это, эта функция в основном добавляет функцию, которая будет вызвана на window.onload;

Вы также можете использовать его, чтобы добавить столько функций в onload. Даже вы можете переместить функцию StartUp внешних JS и ваша loadVal функция также может быть перемещен во внешних JS

<% 
    String firstName= ""; 
    if (sampleBean.getName() != null) { 
     firstName = sampleBean.getName(); 
    } 
    %> 
    <script type="text/javascript"> 
    var firstName = <%= firstName %>; 
     function startUp(func) 
     { 
      if(window.onload) 
      { 
       var ref = window.onload; 
       window.onload = function(){ 

        ref(); 
        func(); 
       }; 
      } 
      else 
      { 
       window.onload = func;  
      } 
     } 

     startUp(function(){ loadVal(firstName);}); 
</script> 
0

Простой ответ заключается в том, что вам нужно реорганизовать свой сценарий, чтобы сделать его более модульным и настраиваемым.

Вы можете использовать the module pattern in JavaScript, чтобы сделать это лучше.

мои-module.js

var MyModule; 
(function(MyModule){ 

    var fName = MyModule.firstName || ""; 

    function loadVal() {  
     document.getElementById('business_name').value = firstName; 
    } 

    window.onload=loadVal; 

}(MyModule || (MyModule = {}))); 

А теперь в главной странице вы можете сделать что-то вроде этого. Хорошая вещь об этом подходе заключается в том, что вам не нужно загрязнять свой глобальный охват.

<head> 

<!-- Other declarations --> 

    <script type="text/javascript"> 

    var MyModule; 
    (function(MyModule){ 

     MyModule.firstName = <%= firstName %>; 

    }(MyModule || (MyModule = {}))); 

    </script> 
    <script type="text/javascript" src="http://www.domain.com/scripts/my-module.js"> 
    </script> 
</head>