Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JSTL标记检查资源包密钥是否不存在?_Java_Jsp_Internationalization_Jstl_Resourcebundle - Fatal编程技术网

Java 如何使用JSTL标记检查资源包密钥是否不存在?

Java 如何使用JSTL标记检查资源包密钥是否不存在?,java,jsp,internationalization,jstl,resourcebundle,Java,Jsp,Internationalization,Jstl,Resourcebundle,我有一个资源文件,将有一些可选的密钥。如果可选的资源键不存在,我将设置一个默认值。似乎没有简单的方法来确定资源包中是否存在密钥。所以,这就是我要做的,以摆脱它 <fmt:message var="title" key="login.reg.signup.${signupForm.regfrom}.title" /> <c:if test='${fn:startsWith(title, "??")}'> <fmt:message var="title" key

我有一个资源文件,将有一些可选的密钥。如果可选的资源键不存在,我将设置一个默认值。似乎没有简单的方法来确定资源包中是否存在密钥。所以,这就是我要做的,以摆脱它

<fmt:message var="title" key="login.reg.signup.${signupForm.regfrom}.title" />
<c:if test='${fn:startsWith(title, "??")}'>
    <fmt:message var="title" key="login.reg.signup.default.title" /> 
</c:if>


有更好的方法吗?

您可以编写自己的JSP标记来实现这一点,这样您就可以:

<my:message var="title" key="${form}.title" default="default.title"/>


标记实现可以是您当前的JSP语法,也可以是Java类。

您可以使用
{messagesFactory.messages.containsKey('key')}
进行检查。

这只适用于支持EL 2.2的环境(在2009年4月还不存在)。