如何将EL变量传递给javascript

时间:2011-03-01 14:32:57

标签: javascript jsp el

我有一个变量${bean.name}如何将它传递给javascript var?我尝试过var name = "${bean.name}"var name = ${bean.name},但它不起作用。

我的想法是将其置于隐藏的输入中,例如隐藏的<input id="test" type="text" value"${bean.name}">

var name = document.getElementById("test").value;

这不起作用var name成为字符串"${bean.name}"

请注意。我不能使用jstl

4 个答案:

答案 0 :(得分:7)

您无法在.js个文件中评估JSTL。仅限.jsp个文件。 (除非你重新映射jsp servlet,但我不建议这样做。)

更好的方法是在.jsp中定义变量,包括.js,并将这些变量作为参数传递给初始化函数。

另外请确保您没有isELIgnored="true"

答案 1 :(得分:4)

  

这不起作用var var成为字符串“$ {bean.name}”

确保您正在运行支持Servlet 2.4的容器,并且web.xml被声明为Servlet 2.4或更高版本。

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- Config here. -->

</web-app>

这样EL也可以在模板文本中工作(不需要JSTL <c:out>)。它是在Servlet 2.4 / JSP 2.0中引入的。 Tomcat 5.5是Servlet 2.4容器的一个例子。如果您的容器支持更高的servlet API版本,例如2.5或3.0,那么您应声明web.xml符合此版本以使所有最新功能受益。

您还可以在JSP中执行以下操作:

<script type="text/javascript">var name = '${bean.name}';</script>

答案 2 :(得分:0)

我认为您可以使用函数eval(),如下所示:

var name = eval("${bean.name}");

如果要将JavaBean传递给js var,则应覆盖toString()方法。

答案 3 :(得分:0)

Bozho建议的一个例子,这种方式我登录facebook。

<强> 方案:

我在application.properties中有一个属性,我在facebook-login-sdk.js初始化facebook登录时需要这个值。所以我通过下面的代码在java LoginController中读取它,然后在login.jsp中读取它并分配一个全局变量applicationFacebookId然后在facebook-login-sdk.js文件中使用这个全局变量。

重要提示: 在包含facebook-login-sdk.js之前读取变量名applicationFacebookId。因为您将使用全局变量,所以您希望在调用facebook-login-sdk.js之前设置它。

<强> application.properties

security.application.facebookId=yourApplicationFacebookid

<强> LoginController.java

@Value("${security.application.facebookId}")
private String applicationFacebookId;

@RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(HttpServletRequest request, Model model) {
        model.addAttribute("applicationFacebookId", applicationFacebookId);
        return "login";
    }

<强> 的login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script>
    var applicationFacebookId = '${applicationFacebookId}';
    //alert('applicationFacebookId:' + applicationFacebookId);
</script>
<title>Login Page</title>
<script src="<c:url value="/static/js/facebook-login-sdk.js" />"></script>
</head>
</html>

<强> Facebook的登录-sdk.js

window.fbAsyncInit = function() {
    FB.init({
        appId : applicationFacebookId,
        cookie : true, // enable cookies to allow the server to access
        xfbml : true,
        version : 'v2.7'
    });