我正在尝试通过我的jsp文件打印一个字符串变量,这是我的代码:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*;"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>why are you not working</title>
<meta charset="utf-8" />
</head>
<body>
<%
String test = "<b><u>bold and underlined</u></b>";
%>
<c:set var="test1" value="<u>underlined</u>" />
<c:set var="test2" value="${test}" />
<c:out value="${test}" escapeXml="false" />
<c:out value="${test1}" escapeXml="false" />
<c:out value="${test2}" escapeXml="false" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
输出:
有没有办法使用JSTL 打印test或test2?正如您在上面的代码中看到的,我已经设法打印变量test1但页面上没有出现变量test或test2.
PS:为什么我要使用JSTL?因为它提供了一种评估html标签而不是逃避它们的方法
是的.您可以使用pageContext对象test在page范围内设置变量.
<body>
<%
String test = "<b><u>bold and underlined</u></b>";
pageContext.setAttribute("test", test);
%>
<c:set var="test1" value="<u>underlined</u>" />
<c:set var="test2" value="${test}" />
<c:out value="${test}" escapeXml="false" />
<c:out value="${test1}" escapeXml="false" />
<c:out value="${test2}" escapeXml="false" />
</body>
Run Code Online (Sandbox Code Playgroud)
产量
粗体和带下划线的下划线粗体和下划线
JSTL完全适用范围可以是范围的变量request,session或者page.默认范围是page.而scriplet是原始java,它插入到JSP页面的servlet的服务方法中.因此,如果要访问JSTL中的任何scriplet变量,则需要在范围内进行设置.
JSP EL“变量”不是局部变量。当你写的时候
${test}
Run Code Online (Sandbox Code Playgroud)
JSP EL在页面范围、请求范围、会话范围或应用程序范围中查找名为“test”的属性。
因此,它基本上等同于以下 Java 代码:
<%= out.print(pageContext.findAttribute("test")); %>
Run Code Online (Sandbox Code Playgroud)
您无法像尝试使用 JSP EL 那样访问局部变量。并且没有理由想要这样做,因为无论如何您都不应该在 JSP 中包含 Java 代码(即 scriptlet)。用 Java 编写的控制器应该在请求中存储属性,而 JSP EL 应该显示存储在这些属性中的值。
| 归档时间: |
|
| 查看次数: |
43100 次 |
| 最近记录: |