在 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 代应该也 可能被移出视图层。
我有一个 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 代应该也 可能被移出视图层。