如果jsf中存在条件,则显示值作为我的需要

时间:2013-09-09 12:16:36

标签: jsf

我有以下

<h:outputText value="#{verifyTxnList.resolved}"/>

并且会显示YN的记录。 但我真正想要的是:

如果值为Y,则显示Yes,如果N,则显示No

是否有任何想法只在视图部分添加逻辑?

由于

3 个答案:

答案 0 :(得分:4)

使用条件运算符是一种选择,特别是如果它将在应用程序中的单个位置使用 如果您正在寻找将在您的应用程序中的许多地方使用的更清洁的解决方案,Converter似乎对我来说是更好的解决方案:

@FacesConverter("myYesNoConverter")
public class YesNoConverter implements Converter {

   public static final String YES = "Yes", NO = "No";
   public static final String Y = "Y", N = "N";

   @Override
   public Object getAsObject(FacesContext context, UIComponent component, 
                             String value) {
      if(YES.equals(value)) {
         return Y;
      }
      return N;
   }

   @Override
   public String getAsString(FacesContext context, UIComponent component, 
                             Object value) {
      if(Y.equals(value)) {
         return YES;
      }
      return NO;
   }    
}

在您要转换输出的地方,请参阅myYesNoConverter这样的内容。

<h:outputText value="#{verifyTxnList.resolved}" converter="myYesNoConverter"/>

这样,您的转换逻辑不会在您的应用程序中重复多次,并且可以轻松修改。

<强>更新

如果你有JSF 1.2,你必须在faces-config.xml注册你的转换器。

<converter>
    <description>My implementation of Yes No converter</description>
    <converter-id>myYesNoConverter</converter-id>
    <converter-class>
        org.example.YesNoConverter
    </converter-class>
</converter>

并删除@FacesConverter("myYesNoConverter")注释

答案 1 :(得分:2)

如果能得到的只是YN

然后:

 <h:outputText value="#{verifyTxnList.resolved eq 'Y'?'Yes':'No'}"/>

答案 2 :(得分:2)

您可以在value属性中使用EL中的条件运算符:

<h:outputText value="#{verifyTxnList.resolved == 'Y' ? 'Yes' : 'No'}"/>