将bean变量传递给javascript

时间:2013-11-18 12:36:08

标签: javascript jquery jsp

我正在尝试清理用jsp servlet和javascript,jquery编写的应用程序。目前在jsp中,有很多javascripts写的。我试图将所有这些javascripts移动到一个单独的js文件。在jsp。

<%
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文件。那我怎么能传递这个“&lt;%= firstName%&gt;”这是从bean中获取的吗?

3 个答案:

答案 0 :(得分:0)

试试这个,这个函数基本上添加了要在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>

答案 1 :(得分: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>

答案 2 :(得分:-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>