【问题标题】:How to print a java String in a jsp file [duplicate]如何在jsp文件中打印java字符串[重复]
【发布时间】:2016-01-15 22:50:59
【问题描述】:

我正在尝试通过我的 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>

输出:

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

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

【问题讨论】:

  • 你是在通过一本十年前的 JSP 1.x 书来学习 JSP 吗?从 JSP 2.0 (2003!) 开始,您根本不需要 &lt;c:out value="${test}" escapeXml="false" /&gt;。只需${test} 就足够了。确保您使用最新的资源来学习 JSP。从我们的 wiki 页面开始:stackoverflow.com/tags/jsp/info

标签: jsp jstl


【解决方案1】:

是的。您可以使用pageContext 对象在page 范围内设置变量test

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

输出

加粗加下划线加下划线加粗加下划线

JSTL 完全适用于作用域变量,作用域可以是requestsessionpage。默认作用域是page。 而 scriplet 是原始 java,它被插入到 JSP 页面的 servlet 的 service 方法中。 所以如果你想访问 JSTL 中的任何 scriplet 变量,你需要在范围内设置。

另见

【讨论】:

    【解决方案2】:

    JSP EL“变量”不是局部变量。当你写

    ${test}
    

    JSP EL 在页面范围、请求范围、会话范围或应用范围内查找名为“test”的属性

    所以,它基本上相当于下面的Java代码:

    <%= out.print(pageContext.findAttribute("test")); %>
    

    当您尝试使用 JSP EL 时,您无法访问局部变量。而且没有理由想要这样做,因为无论如何您都不应该在 JSP 中包含 Java 代码(即 scriptlet)。用 Java 编写的控制器应该在请求中存储属性,而 JSP EL 应该显示存储在这些属性中的值。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多