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

Jsp ${fn:escapeXml(var)}不显示var的值,jsp,jstl,el,Jsp,Jstl,El,我正在学习谷歌appengine教程。我有一个jsp文件,其中我使用${fn:escapeXml(var)}将字符串变量var的值放入将生成的html代码中。但是,生成的html代码不会在该位置放置任何内容。我用chrome浏览器中的查看源代码选项确认了这一点 以下是我的jsp代码: <%@page import="java.util.List"%> <%@page import="com.google.appengine.api.datasto

我正在学习谷歌appengine教程。我有一个jsp文件,其中我使用
${fn:escapeXml(var)}
将字符串变量
var
的值放入将生成的html代码中。但是,生成的html代码不会在该位置放置任何内容。我用chrome浏览器中的查看源代码选项确认了这一点

以下是我的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>

在此处插入标题
var的值:“${fn:escapeXml(var)}”
以下是在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>

在此处插入标题
风险价值:“

Scriptlet变量在EL作用域中不可用。试一试

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

var的值:“${fn:escapeXml(c)}”
您应该全部使用scriptlet,并使用JSTL/EL来准备这个变量,就像您已经在为函数使用一样

我建议您使用或代替更易于使用且不易出错的
Scriplet

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

var的值:“${fn:escapeXml(值)}”
你可能也对这个感兴趣

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

阅读更多


在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')");
import org.springframework.web.util.HtmlUtils;
System.out.println(htmlitls.htmlEscape(“TR标记脚本标记警报('hello Rahul')));

+1但尽量避免Scriplet。@Braj你知道什么是scriptlet吗?这是什么?
有三种类型的脚本元素:1)scriptlet标记
2)expression标记
3。)声明标记
我不知道什么是脚本元素,哪些选项用于scriptlet。导航问题:一个scriptlet可以包含多少Java语句?