Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 JSF以清晰的方式显示条件文本 …更多针对所有不同状态类型的面板组消息, 以及要显示的不同消息。。_Java_Jsf_Jakarta Ee_Enums_Resourcebundle - Fatal编程技术网

Java JSF以清晰的方式显示条件文本 …更多针对所有不同状态类型的面板组消息, 以及要显示的不同消息。。

Java JSF以清晰的方式显示条件文本 …更多针对所有不同状态类型的面板组消息, 以及要显示的不同消息。。,java,jsf,jakarta-ee,enums,resourcebundle,Java,Jsf,Jakarta Ee,Enums,Resourcebundle,在我的glassfish Jee6应用程序中,我根据帐户的状态显示消息,我将字符串保存在文本文件中,并从JSF页面访问,如上所述{msg['account/failed']} 现在,这些if-else状态条件对于不同类型的消息越来越多,并且使JSF页面变得一团糟,我如何从Java代码中执行同样的操作 我可以设置消息的值,并将if-else条件放在Java代码中,但是如何访问保留字符串的文本文件呢?或者任何其他干净的JSF方法来做到这一点 您可能需要使用JSTL标记……我使用过JSF,有时您需要尝

在我的glassfish Jee6应用程序中,我根据帐户的状态显示消息,我将字符串保存在文本文件中,并从JSF页面访问,如上所述{msg['account/failed']}

现在,这些if-else状态条件对于不同类型的消息越来越多,并且使JSF页面变得一团糟,我如何从Java代码中执行同样的操作


我可以设置消息的值,并将if-else条件放在Java代码中,但是如何访问保留字符串的文本文件呢?或者任何其他干净的JSF方法来做到这一点

您可能需要使用JSTL标记……我使用过JSF,有时您需要尝试一些东西。 你可以用

<h:panelGroup rendered="#{Account.Status eq 'FAILED' }">
            <h:outputText value="# {msg['account/failed']}" escape="false" />
</h:panelGroup>

<h:panelGroup rendered="#{Account.Status eq 'SUCCESS' }">
            <h:outputText value="# {msg['account/success']}" escape="false" />
</h:panelGroup>

...more panelgroup messages like this for all different Status types,
 and different messages to be shown..

或使用

   <c:if test="condition">
   <h:outputText value="# {msg['account/success']}" escape="false" />
  </c:if>

您可能需要使用JSTL标记……我使用过JSF,有时您需要尝试一些东西。 你可以用

<h:panelGroup rendered="#{Account.Status eq 'FAILED' }">
            <h:outputText value="# {msg['account/failed']}" escape="false" />
</h:panelGroup>

<h:panelGroup rendered="#{Account.Status eq 'SUCCESS' }">
            <h:outputText value="# {msg['account/success']}" escape="false" />
</h:panelGroup>

...more panelgroup messages like this for all different Status types,
 and different messages to be shown..

或使用

   <c:if test="condition">
   <h:outputText value="# {msg['account/success']}" escape="false" />
  </c:if>

假设帐户状态为枚举,我会发布该方法

    <c:choose>
          <c:when test="${param.enter=='1'}">
  <h:outputText value="# {msg['account/success']}" escape="false" />
          </c:when>

          <c:otherwise>
         <h:outputText value="# {msg['account/failed']}" escape="false" />
          </c:otherwise>
    </c:choose>

(代码未经测试,因为我手头没有eclipse,但总体思路应该是合理的)

假设帐户状态是枚举,我会发布该方法

    <c:choose>
          <c:when test="${param.enter=='1'}">
  <h:outputText value="# {msg['account/success']}" escape="false" />
          </c:when>

          <c:otherwise>
         <h:outputText value="# {msg['account/failed']}" escape="false" />
          </c:otherwise>
    </c:choose>

(代码未经测试,因为我手头没有eclipse,但总体思路应该是合理的)

只需将枚举值作为bundle键的一部分即可。例如


(我仅将
/
替换为
,并将实例/属性名称小写,以符合标准约定)

account.status.FAILED=失败
account.status.SUCCESS=成功
或者,将键设为枚举的属性。除其他外,另见:


只需将枚举值作为捆绑密钥的一部分即可。例如


(我仅将
/
替换为
,并将实例/属性名称小写,以符合标准约定)

account.status.FAILED=失败
account.status.SUCCESS=成功
或者,将键设为枚举的属性。除其他外,另见:



JSTL标签和JSF是一个大禁忌!当与Facelet混合使用时,这可能会导致严重的头痛!我恭敬地不同意你的意见。在某些情况下,您可能希望在JSF中使用JSTL,这是您想要完成的任务?不知道帐户状态在视图的生命周期中是否发生更改,使用JSTL而不是呈现属性的建议可能非常危险-而且我看不到JSTL在这里有任何引人注目的优势?@meriton我认为您的解决方案肯定是这里最好的方法,但我只是想提一下,以防给他/她另一个选择。@user717630 JSTL应该只用于削减成本组件树完全脱离视图。在一些情况下,这可能是一个有效的使用,但以上不是其中之一。如果他认为有任何类型的
f:ajax
,JSTL将导致各种问题<代码>在这里更合适。JSTL标记和JSF是一个大禁忌!当与Facelet混合使用时,这可能会导致严重的头痛!我恭敬地不同意你的意见。在某些情况下,您可能希望在JSF中使用JSTL,这是您想要完成的任务?不知道帐户状态在视图的生命周期中是否发生更改,使用JSTL而不是呈现属性的建议可能非常危险-而且我看不到JSTL在这里有任何引人注目的优势?@meriton我认为您的解决方案肯定是这里最好的方法,但我只是想提一下,以防给他/她另一个选择。@user717630 JSTL应该只用于削减成本组件树完全脱离视图。在一些情况下,这可能是一个有效的使用,但以上不是其中之一。如果他认为有任何类型的
f:ajax
,JSTL将导致各种问题<代码>在这里更合适。tnx看起来可以帮助我,但由于我对JSF的了解很少,我不知道如何使用这个想法。这是关于如何访问外部txt文件的我猜只有?也许您可以编辑这个问题来进一步解释它在xhtml和java文件中的外观?以及为什么要使用el函数而不是像#{bean.toString(Account.status)}这样的普通方法一样调用该方法?为了el表达式的简洁性和可读性。当然,您可以编写#{enumFormatter.toString(Account.status)},但这有点冗长。tnx看起来可以帮助我,但由于我对JSF的了解很少,我不知道如何使用这个想法。这是关于如何访问外部txt文件的我猜只有?也许您可以编辑这个问题来进一步解释它在xhtml和java文件中的外观?以及为什么要使用el函数而不是像#{bean.toString(Account.status)}这样的普通方法一样调用该方法?为了el表达式的简洁性和可读性。当然,您可以编写#{enumFormatter.toString(Account.status)},但这有点长。+1:解决el中缺少字符串concatation操作符的问题是一个多么好的方法。+1:解决el中缺少字符串concatation操作符的问题是一个多么好的方法。