我有以下
<h:outputText value="#{verifyTxnList.resolved}"/>
并且会显示Y
或N
的记录。
但我真正想要的是:
如果值为Y
,则显示Yes
,如果N
,则显示No
。
是否有任何想法只在视图部分添加逻辑?
由于
答案 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)
如果能得到的只是Y
或N
然后:
<h:outputText value="#{verifyTxnList.resolved eq 'Y'?'Yes':'No'}"/>
答案 2 :(得分:2)
您可以在value
属性中使用EL中的条件运算符:
<h:outputText value="#{verifyTxnList.resolved == 'Y' ? 'Yes' : 'No'}"/>