gpt4 book ai didi

java - 使用 JSP 和 XML 编写消息

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:59 24 4
gpt4 key购买 nike

我有一个包含消息的 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

我正在努力让它工作,但我完全迷失了。你能帮我解决这个问题或者给我这个“技术”的名称以继续寻找信息吗?

谢谢!

最佳答案

此类任务通常称为“国际化”或“模板化”。

这是一种使用现有代码执行此操作的简单方法:

<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")) %>" />

使用 scriptlet (<%= .. %>)在 JSP 中并不是最好的处理方式,相反,您可以创建一个在内部使用 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

关于java - 使用 JSP 和 XML 编写消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com