我正在关注谷歌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>
答案 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 Library或Expression 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')");