2014-02-18 48 views
2

如果我的代码类似于以下内容,我可以在没有任何问题的情况下运行它吗?我假定Java将的JavaScript之前运行,这样的JavaScript不会有问题,但我没有这样做过:是否可以在jsp中使用Java编写JavaScript

<script type="text/javascript"> 
<% functThatOutputsJavascript() %> 
</script> 
+2

你应该可以将javascript写入输出写入器。但我会推荐一种不同的方法。 – robbmj

+1

你为什么不试试看看它是否有效? –

+0

当然是。 JSP只是一个模板。你可以把任何你想要的模板。 –

回答

0

这是非常,非常糟糕的编程风格,但肯定的,它是可能。

我正在处理的代码已经做了一些非常类似的事情。我想你会真正想做的事:

<script type="text/javascript"> 
    <%= functThatOutputsJavascript() %> 
</script> 

而实际上,你可以做的更差,使用Java条件语句来修改JavaScript输出:

<script type="text/javascript"> 
    while (i > 0) { 
     <% if (serverVar)) { %> 
      console.log("Server says yes!"); 
     <% } else { %> 
      console.log("Server says no!"); 
     <% } %> 
    } 
</script> 

这则输出此代码,如果serverVar是真:

<script type="text/javascript"> 
    while (i > 0) { 
      console.log("Server says yes!"); 
    } 
</script> 

或此代码,如果是假的:

<script type="text/javascript"> 
    while (i > 0) { 
      console.log("Server says no!"); 
    } 
</script> 

这是可怕的编码风格,我希望你不会在实践中做到这一点!如果您想知道如何避免编写这样的代码,请查看以下问题:How to avoid Java code in JSP files?

一般的建议是使用JSP EL(JSP表达式语言)将服务器端变量设置到您的Javascript中,然后将所有您的JavaScript中的逻辑。

+0

谢谢。我甚至还没有开始写任何东西(这就是为什么我问),所以我会考虑避免这种风格。我可能会使用它来暂时获得某些工作。 – EGr

+0

您需要的用例应该非常非常纤细。使用JSP Expression语言来获得你想要的结果会更好。 – JBCP

相关问题