gpt4 book ai didi

java - 如何检查message-key是否为空?

转载 作者:行者123 更新时间:2023-12-01 18:09:01 24 4
gpt4 key购买 nike

我的 .jsp 文件中有以下内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
...
<fmt:message key="mykey.${country}" />

对于某些国家/地区,此 key 存在并且消息按预期显示,而对于其他国家/地区,此 key 不存在。如果它不存在,我会得到以下输出:

???mykey.DE??? 

这是我不想要的。如果 key 不存在,我希望没有输出。

mykey.${country}解析为:

  • mykey.DE
  • mykey.SE
  • mykey.US
  • mykey.GB
  • ...

我不知道它会是哪一个,但我需要检查它是否作为变量存在。

有办法检查这个或隐藏不需要的输出吗?

<小时/>

到目前为止我尝试过的:

我试图用它包围它

<c:if test="$(not empty mykey.${country})">
<fmt:message key="mykey.${country}" />
</c:if>

但它不起作用:即使 key 存在,该消息也永远不会显示。

我还尝试先将其放入局部变量中:

<c:set var="localVar" value="mykey.${country}" />
<c:out value="${localVar}" /> <!-- this prints 'mykey.DE' correctly -->
<c:if test="!empty ${localVar}">
<div style="padding-top:10px;">
<fmt:message key="mykey.${country}" />
</div>
</c:if>

但是检查并没有按预期进行。

最佳答案

你可以试试这个:

<c:set var="localvar"><fmt:message key="mykey.${country}" /></c:set>

<c:if test="${!fn:startsWith(localvar,'???')}">
${localvar}
</c:if>

不过,并不完全漂亮。另一种选择可能是编写自定义消息标签:

<%@ tag body-content="empty" %>
<%@ attribute name="key" required="true" %>
<%@ attribute name="defaultvalue" required="true" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<c:set var="msg"><fmt:message key="${key}" /></c:set>

<c:choose>

<c:when test="${!fn:startsWith(msg,'???')}">
${msg}
</c:when>

<c:otherwise>
${defaultvalue}
</c:otherwise>

</c:choose>

然后使用如下:

<my:message key="mykey.${country}" defaultvalue=""/>

关于java - 如何检查message-key是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286412/

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