2013-04-09 4 views
0

В настоящее время я борюсь со следующей проблемой. В моем веб-приложении Spring у меня разные типы контента (например, текст, изображения или код). В зависимости от типа контента, мне нужно, чтобы отобразить его по-разному:HTML-теги Proccess для Spring MVC View

текст: <p>some text</p>

изображение: <img src="path/to/my.img" />

код<pre>some code</pre>

HTML-теги должны быть concatened к фактическому содержанию. Проблема в том, что если я просто создаю выходной текст в своем классе Java, то теги HTML не будут разрешены на мой взгляд, так что будет отображаться <p> текст </p >.

Возможно ли, что HTML-теги могут быть разрешены на мой взгляд?

+0

Нет такой вещи, как «разрешение HTML-тегов» (по крайней мере, не в этом контексте). Вы имеете в виду «Я хочу разрешить EL в моих струнах»? Или вы имеете в виду «помощь, мои теги ускользают»? Достижение чего-то сложно, если вы даже не знаете, что это такое. – fdreger

+0

Я думаю, что «помощь, мои теги ускользают», это то, что я имею в виду тогда. – mhmpl

ответ

1

Если это просто спасаясь часть, которая является проблемой, использование:

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

(Я предполагаю, что ваша строка HTML находится в моду el.snippets.html12).

Конечно, вся идея плохая. Я не связан с полицией MVC, но зачем использовать структуру MVC, если вы считаете, что это хорошая идея для генерации HTML внутри вашего контроллера и передать его, как строку - в виде? С моей точки зрения, это немного шизофрения.

Вы можете сэкономить много здравого смысла, просто передав все это в коммутаторе внутри шаблона. Я имею в виду:

<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 - будьте честны.

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(); 
    } 
+0

Спасибо! Но это будет только обходным путем, может быть, решение, которое напрямую предоставляется Spring MVC? – mhmpl

+1

Я думал, что вы ищете логику для того же .. :-) .. Вам не нужна Spring MVC, чтобы сделать это, я верю. Вы можете использовать c: out с escapeXML. Проверьте этот http://java67.blogspot.com/2012/10/how-to-escape-html-special-characters-JSP-Java-Example.html. Надеюсь это поможет. – ArunM