簡體   English   中英

使用JSP和XML編寫的消息

[英]Composed messages using JSP and XML

我有一個帶有消息的XML,例如:

<?xml version="1.0" ?>
<messages>
    <hello>Hi {1} welcome to {2}</hello>
</messages>

因此,我想用一些JSP變量替換{1}和{2}並打印結果:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>

/* set vars */
<c:set var="name" value="John Doe" />
<c:set var="location" value="Internet" />

/* import and parse xml */
<c:import url="messages.xml" var="messages" />
<x:parse xml="${messages}" var="xml" />

/* print message */
<x:out select="$xml/messages/hello" var="name" var="location"  />

最后一行的結果應為:

Hi John Doe welcome to Internet

我正在努力使它正常工作,但我完全迷路了。 您能幫我解決這個問題還是給我這個“技術”的名稱,以便不斷尋找信息?

謝謝!

這稱為(消息)格式,而MessageFormat類正是您要尋找的。 看一下JavaDoc:

http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html

這種任務通常稱為“ 國際化 ”或“ 模板化 ”。

這是使用現有代碼執行此操作的簡單方法:

<c:set var="helloTemplate">
    <x:out select="$xml/messages/hello" />
</c:set>

<c:out value="<%= java.text.MessageFormat.format(helloTemplate, 
                                pageContext.getAttribute("name"), 
                                pageContext.getAttribute("location")) %>" />

在JSP中使用scriptlet (<%= .. %>)並不是最好的處理方式,而是可以創建一個在內部使用MessageFormat的函數/標記。 創建自定義標簽的示例: https : //sites.google.com/a/pintailconsultingllc.com/java/custom-jsp-tag-libraries

或者,如果您可以控制消息文件,則可以使用屬性文件代替xml格式(例如messages.properties ),該文件將包含:

hello=Hi {1} welcome to {2}

然后可以按以下方式使用它:

<fmt:message key="hello">
    <fmt:param value="${name}" />
    <fmt:param value="${location}" />
</fmt:message> 

通常將其稱為“ 國際化 ”-更多信息: http : //docs.oracle.com/cd/E19159-01/819-3669/bnaxu/index.html

暫無
暫無

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

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