【问题标题】:JSTL tags print in JSP from a data classJSTL 标记在 JSP 中从数据类打印
【发布时间】:2014-08-12 13:27:20
【问题描述】:

我有一个业务层类来管理一些数据。有一种方法可以在这些代码中生成 HTML 代码,包括 JSTL 标记。

<h1 id=\"infoMsg\"><fmt:message key=\"uebersicht.infomsg\" /></h1>

此代码将包含在 JSP 文件中 像这样:

<%=bl.getMessages()%>

但是那样它将被包含为 HTML 请求,但是还有另一种方法可以包含方法中的代码 比如这样:

<c:out value="${bl.getMessages()}"/>

【问题讨论】:

  • 你能详细说明你的问题吗?我真的不明白您要解决的问题。
  • &lt;c:out value="${bl.messsages}"/&gt; 会更合适。
  • 好的。 MessageBL 类的定义类似于&lt;% MessageBL bl = new MessageBL(); %&gt;,我想包含h1 标记的HTML 代码。此方法将代码作为字符串返回。我是否必须以其他方式定义bl

标签: java html jsp web-applications jstl


【解决方案1】:

将它包含在 JSP 文件中的最简单方法是使用您提供的代码(假设该方法返回 HTML 格式的字符串):

<%=bl.getMessages()%>

这段代码:

<c:out value="${bl.getMessages()}"/>

将无法工作,因为您在 JSP 脚本中声明了您的对象,如下所示:

<% MessageBL bl = new MessageBL(); %>

原因是,在脚本中声明的 JSP 对象不能从 EL 表达式访问。

【讨论】:

  • 我用这个标签 &lt;%=bl.getMessages()%&gt; 试过了,但问题是返回字符串中的 JSTL 标签 &lt;fmt:message ... 不起作用。我必须如何声明类才能将其与 JSTL 一起使用?或者这是不可能的?
  • 为什么&lt;fmt:message... 不起作用?你是否包含了这样的标签库:&lt;%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&gt;
  • 如果我在 JSP 中编写它,它可以工作,但如果我从另一个类获取源并包含它,它就不起作用。之后就可以在网站源码中看到JSTL标签了。
【解决方案2】:

我没有找到任何解决方案。因此我找到了解决方法:

<!-- set whole HTML source -->
<c:set var="message" value="${bl.messages}"></c:set>
<!-- set the key from a propertie file on a variable -->
<fmt:message key="uebersicht.infomsg" var="info"/>
<!-- get first part before the fmt tag -->
<c:set var="erst" value="${fn:substringBefore(message, '<fmt:message key')}" scope="application" />
<!-- get second part after the fmt tag -->
<c:set var="zweit" value="${fn:substringAfter(message, 'uebersicht.infomsg\" />')}" />
<!-- connect the three parts (first - key varible - second) -->
<fmt:message key="${fn:replace(erst,'?','')}"/>
${info}
<fmt:message key="${zweit}"/>

可以,但是两部分显示问号,输出是这样的:

??? no information!! ???

<h1 id="infoMsg">???
no information!!
???</h1>

如何替换问号?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    相关资源
    最近更新 更多