2016-01-15 2 views
0

У меня есть страница JSP, которая выглядит следующим образом:Использование Java в JavaScript,

Что намерение состоит в том, чтобы получить текущую среду с помощью системной переменной, а затем сгенерировать корректный 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, но это не работает.

ответ

1

Поскольку вы уже в JSP, почему не просто сделать (примерно) это:

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

Лично я бы переместить эту логику из поля зрения и создать атрибут запроса с областью видимости в фильтре, как часть вашего процессора запросов Struts 1 и т. д., поскольку скриптлеты почти всегда плохи. Он также дает вам возможность установить его во время выполнения.

Кроме того, генерация URL должна также, вероятно, будет перемещена из уровня просмотра.