[英]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.