0

私は現在、次の問題に苦しんでいます。私の Spring Web アプリケーションには、さまざまなコンテンツ タイプ (テキスト、画像、コードなど) があります。コンテンツ タイプに応じて、さまざまな方法で表示する必要があります。

テキスト:<p>some text</p>

画像:<img src="path/to/my.img" />

コード <pre>some code</pre>

HTML タグは、実際のコンテンツに連結する必要があります。問題は、単に Java クラスで出力テキストを作成すると、ビューで HTML タグが解決されず、<p>一部のテキスト</p> が表示されることです。

ビューで HTML タグを解決できる可能性はありますか?

4

2 に答える 2

1

問題がエスケープ部分だけの場合は、次を使用します。

<c:out value="${model.snippets.html12}" escapeXml="false" />

(HTML文字列がmodel.snippets.html12にあると想定しています)。

もちろん、全体のアイデアは悪いです。私は MVC 警察とは関係ありませんが、コントローラー内で HTML を生成し、それを文字列としてビューに渡すのが良いと思われる場合、MVC フレームワークを使用する意味は何ですか? 私の観点からは、それは少し統合失調症です。

テンプレート内のスイッチで全体をレンダリングするだけで、多くの正気を保つことができます。私は次のように意味します:

  <c:choose>

  <c:when test="${thing.type == 'CODE'}">
     <div> some code: ${thing.content} </div>
  </c:when>

  <c:when test="${thing.type == 'IMAGE'}">
     <img src="${thing.src}" alt="${thing.whatever}" />
  </c:when>


  <!-- some other choices -->


  </c:choose>

さらに良いことに、必要な場所でロジックを再利用できるようにする単純なタグ ファイルを作成します。

またはMVCを捨ててください-正直に言ってください。

于 2013-04-09T10:39:11.520 に答える
1

jquery がある場合は、モデルにコンテンツ タイプを設定します。HTMLに設定します。

<input type = hidden id = contentType value = "${yourmodel.contentType}"

要素にスパンを追加する

<span id = "textspan" style = "display:none"><p>some text</p></span>
<span id = "imgspan><img src="path/to/my.img" /></span>
<span id = "codespan><pre>some code</pre></span>

jqueryを書く

  if($("contentType").val() == text){
      $("#textspan").show();
    }else if($("contentType").val() == img){
   $("#imgspan").show();
    }else{
     $("#codespan").show();
    }
于 2013-04-09T07:08:06.760 に答える