1. ホーム
  2. jsp

[解決済み] jspファイル内のjava Stringを印刷する方法 [重複]。

2022-02-07 13:56:09

質問

私は、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>

を出力します。

を印刷する方法はありますか? テスト または テスト2 JSTL を使って?上のコードでわかるように、変数test1を表示することはできましたが、変数testまたはtest2については、ページ上に何も表示されません。

追記:なぜJSTLを使いたいのか?htmlタグを評価し、エスケープしない方法を提供しているからです。

どのように解決するのですか?

そうです、変数を設定することができます。 testpage スコープを使用して ページコンテキスト オブジェクトを作成します。

<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 はスコープ付き変数で完全に動作し、スコープは request , session または page .デフォルトのスコープは page . 一方、scripletはJSPページのサーブレットのサービスメソッドに挿入される生のJavaです。 したがって、JSTL でスクリプレット変数にアクセスしたい場合は、スコープを設定する必要があります。

参照