簡體   English   中英

JSTL標記從數據類以JSP打印

[英]JSTL tags print in JSP from a data class

我有一個商務層類來管理一些數據。 有一種方法可以在包含JSTL標簽的代碼中生成HTML代碼。

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

此代碼將包含在JSP文件中,如下所示:

<%=bl.getMessages()%>

但是以這種方式,它將被包含為HTML請求,但是還有另一種方式來包含來自方法的代碼,例如:

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

將其包含在JSP文件中的最簡單方法是使用您提供的代碼(假設該方法返回HTML格式的String):

<%=bl.getMessages()%>

此代碼:

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

將無法正常工作,因為您在這樣的JSP片段中聲明了對象:

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

原因是,無法從EL表達式訪問在Scriplet中聲明的JSP對象。

我沒有找到任何解決方案。 因此,我找到了一種解決方法:

<!-- 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>

如何替換問號?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM