0

我有以下

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

将有显示记录YN。但我真正想要的是:

if value is Ythen 显示Yeselse if Nthen No

有什么想法只在视图部分添加逻辑吗?

谢谢

4

3 回答 3

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")注释

于 2013-09-09T12:59:24.163 回答
3

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

<h:outputText value="#{verifyTxnList.resolved == 'Y' ? 'Yes' : 'No'}"/>
于 2013-09-09T12:19:37.533 回答
2

如果你能得到的只是YN

然后:

 <h:outputText value="#{verifyTxnList.resolved eq 'Y'?'Yes':'No'}"/>
于 2013-09-09T12:19:28.923 回答