0

我目前正在努力解决以下问题。在我的 Spring Web 应用程序中,我有不同的内容类型(例如文本、图像或代码)。根据内容类型,我需要以不同的方式显示它:

文字<p>some text</p>

图片<img src="path/to/my.img" />

代码 <pre>some code</pre>

HTML 标记应连接到实际内容。问题是,如果我只是在我的 Java 类中构建输出文本,我认为 HTML 标记将不会被解析,因此 <p>some text</p> 将被显示。

在我看来,HTML标签是否有可能被解析?

4

2 回答 2

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 回答
1

如果问题只是转义部分,请使用:

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

(我假设您的 HTML 字符串在 model.snippets.html12 中)。

当然,整个想法很糟糕。我不隶属于 MVC Police,但是如果您认为在控制器中生成 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 回答