jspに記述したhtmlを評価せずに出力するには？


以下のようなhtmlをjspで出力したいです。

[code]

    <ul id="item-list">
      <script type="text/html">
        <li><%=item.name%>: <%=item.msg%></li>
      </script>
    
      <li>山田: おはようございます</li>
      <li>田中: こんにちは</li>
    </ul>
    
[/code]

`script`の箇所を除く出力をする場合は以下のようにすれば良いと思います。

[code]

    <ul id="item-list">
      <%for(Item item: items){%>
        <li><%=item.name%>: <%=item.msg%></li>
      <%}%>
    </ul>
    
[/code]

しかし、今回は`<ul>`の内部に、`<script>`で括られた評価しないテキスト`<li><%=item.name%>:
<%=item.msg%></li>`を含めたいです。

つまり、以下のようにすれば良いことになります。

[code]

    <ul id="item-list">
      <script type="text/html">
        <li><\%=item.name%>: <\%=item.msg%></li>
      </script>
    
      <%for(Item item: items){%>
        <li><%=item.name%>: <%=item.msg%></li>
      <%}%>
    </ul>
    
[/code]

今回の例では、`<li>`の中身がシンプルなので何も問題がない気がしますが`<li>`の中身が複雑な場合にはほぼ同じHTMLを２度記述する必要が生まれます。

`<li>`部分を別ファイルに分けるというような処理を行わずに、このjspファイル単体で`<li>`部分の文字列を一度変数に入れるなどして、評価する場合としない場合の出力を同時に行うことはできますでしょうか？




文字列を一度変数に入れる手段としてスタンダードタグライブラリであるcoreのsetを利用すればタグで囲まれた内容を変数に代入することができます。

[code]

    <c:set var=”変数名” [scope=”{page|request|session|application}”]>
        値 
    </c:set>
    
[/code]

そして、c:outを利用することで変数に代入した文字列を出力することができます。

[code]

    <c:out value="${変数名}" />
    
[/code]

しかし、評価する前の値と評価した後の値を出力する方法はおそらくありませんので、独自のtaglibを定義するしかないと思います。




文字列を一度変数に入れる手段としてスタンダードタグライブラリであるcoreのsetを利用すればタグで囲まれた内容を変数に代入することができます。

[code]

    <c:set var=”変数名” [scope=”{page|request|session|application}”]>
        値 
    </c:set>
    
[/code]

そして、c:outを利用することで変数に代入した文字列を出力することができます。

[code]

    <c:out value="${変数名}" />
    
[/code]

しかし、評価する前の値と評価した後の値を出力する方法はおそらくありませんので、独自のtaglibを定義するしかないと思います。

