scriptlet里面的脚本 - 不好的做法如何避免

时间:2015-04-03 03:23:59

标签: java javascript jsp scriptlet

我正在开发一个遗留项目,我在下面看到了一段代码。 我知道在scriptlet中使用脚本是一种不好的做法。 对此,我心里很少有困惑。

  1. 我相信scriptlet是在页面加载之前执行的,所以如果下面条件为true则ShowBookReference()函数调用是Html页面的一部分,但我的问题是当呈现页面时是否应该调用此函数?
  2.  <% if (refLinkTerm != null) { %>
              <script Language="javascript">
              ShowBookReference('<%=sub2ndNavMenu%>', '<%=refLinkTerm%>', <%=String.valueOf(searchType)%>, <%=String.valueOf(codeType)%>)
              </script>
        <%}%>

    1. 如何避免这种做法?
    2. 请分享您的想法。

2 个答案:

答案 0 :(得分:2)

使用Spring MVC等MVC框架。在这些框架中,您将使用要显示的页面的值填充Java对象(或对象图),然后页面将使用这些值填充占位符。

答案 1 :(得分:2)

就JSP而言,通常使用scriptlets为JS赋值。

但正如您所提到的,它在页面加载之前运行,因此最好在window.onload上运行该函数。

<script type="text/javascript">
      window.onload = function() {
          ShowBookReference('<%=sub2ndNavMenu%>', '<%=refLinkTerm%>', <%=String.valueOf(searchType)%>, <%=String.valueOf(codeType)%>)
       }
</script>

如果你在ShowBookReference函数中引用了一些DOM元素,它可能不可用,所以在页面加载时运行它。

否则,您可以使用像JSF这样的UI框架,它为您提供了将Java值轻松绑定到UI的标记。