$ {fn:escapeXml(var)}不显示var的值

时间:2014-06-15 16:59:24

标签: jsp jstl el

我正在关注谷歌appengine的this教程。我有一个jsp文件,我使用${fn:escapeXml(var)}将String变量var的值放入将生成的html代码中。但是,生成的html代码不会在该位置放置任何内容。我使用chrome中的'view source'选项确认了它。

以下是我的jsp代码:

<%@page import="java.util.List"%>

<%@page import="com.google.appengine.api.datastore.Query"%>
<%@ page import="com.google.appengine.api.datastore.DatastoreService"%>
<%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory"%>
<%@ page import="com.google.appengine.api.datastore.Entity"%>
<%@ page import="com.google.appengine.api.datastore.FetchOptions"%>
<%@ page import="com.google.appengine.api.datastore.Key"%>
<%@ page import="com.google.appengine.api.datastore.KeyFactory"%>


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% String var = "asd";  %>

value of var:"${fn:escapeXml(var)}"
</body>
</html>

以下是点击Chrome中的“查看来源”时出现的html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>


value of var:"" 
</body>
</html>

3 个答案:

答案 0 :(得分:1)

EL范围中没有Scriptlet变量。尝试

<c:set var="c"><%=var%></c:set>
value of var:"${fn:escapeXml(c)}"

答案 1 :(得分:1)

您应该avoid scriptlets 并使用JSTL / EL准备此变量,因为您已经使用了 function

我建议您使用JavaServer Pages Standard Tag LibraryExpression Language代替Scriplet,这样更易​​于使用且不易出错。

<c:set var="value" value="asd"/>    
value of var:"${fn:escapeXml(value)}"

你可能对这个也感兴趣

<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />

了解更多

答案 2 :(得分:0)

在JSP / Java中你应该使用这段代码:

在JSP / HTML中:

<c:out value="TR tag </tr> Script Tag <script>alert("hello Rahul")</script>" escapeXml="true" />

在Java中:

import org.springframework.web.util.HtmlUtils;

System.out.println(HtmlUtils.htmlEscape("TR tag </tr> Script Tag <script>alert('hello Rahul')");