在 Java 脚本中使用 Java

Use Java within Javascript

我有一个 jsp 页面,如下所示:

目的是通过系统变量获取当前环境,然后为该环境生成正确的 url。

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>

<%
String sysEnv = "";
if(System.getProperty("env.name").equals("test")) {
    sysEnv = "test";
} 
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>
<head>
    <%@ include file="/includes/common.jsp" %>
    <script type="text/javascript" src="<c:out value="${requestScope.scriptsLocation}"/>/scripts/general.js"></script>

    <c:if test="${requestScope.isFeed == true}">
        <jsp:include page="/includes/someInclude.jsp"/>
        <script src="http://www.myothersite.com/feed/d/some.js" type="text/javascript"></script>

        <script type="text/javascript">

       var environ = <%=sysEnv%>;

        if(environ == 'test'){
                var theUrl = 'http://mywebsite.com?isFeed=true&env=TEST';
        } else {
        var theUrl = 'http://mywebsite.com?isFeed=true';
        }

       ...

    </script>

...

我想我应该导入标签逻辑来执行我在 Java 中尝试实现的循环,但这不起作用。

既然你已经在 JSP 为什么不(大致)这样做:

<script>
  var url = 'http://mywebsite.com?isFeed=true';
  if ('<%= System.getProperty("env.name") %>' === 'test') {
    url += '&env=TEST';
  }
  // etc.

我个人会将此逻辑移出视图并在过滤器中创建一个 request-scoped 属性,作为 Struts 1 请求处理器等的一部分,因为 scriptlet 几乎总是不好的.它还让您有机会在运行时设置它。

此外,URL 代应该 可能被移出视图层。