如何在jsp文件中打印java字符串

参见英文答案 > How to access objects in EL expression language ${}                                    3个
我正在尝试通过我的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>

输出:

enter image description here

有没有办法使用JSTL打印test或test2?正如您在上面的代码中看到的,我已经设法打印变量test1但页面上没有出现变量test或test2.

PS:为什么我要使用JSTL?因为它提供了一种评估html标签而不是逃避它们的方法

最佳答案
是的.您可以使用pageContext对象在页面范围内设置变量测试.

<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>

产量

bold and underlined underlined bold and underlined

JSTL完全使用作用域变量,其中作用域可以是请求,会话或页面.默认作用域是页面.
而scriplet是原始java,它插入到JSP页面的servlet的服务方法中.
因此,如果要访问JSTL中的任何scriplet变量,则需要在范围内进行设置.

也可以看看

> I can pass a variable from a JSP scriptlet to JSTL but not from JSTL
to a JSP scriptlet without an error

转载注明原文:如何在jsp文件中打印java字符串 - 代码日志