我有以下
<h:outputText value="#{verifyTxnList.resolved}"/>
将有显示记录Y
或N
。但我真正想要的是:
if value is Y
then 显示Yes
else if N
then No
。
有什么想法只在视图部分添加逻辑吗?
谢谢
我有以下
<h:outputText value="#{verifyTxnList.resolved}"/>
将有显示记录Y
或N
。但我真正想要的是:
if value is Y
then 显示Yes
else if N
then No
。
有什么想法只在视图部分添加逻辑吗?
谢谢
使用条件运算符是一种选择,特别是如果它将在应用程序中的单个位置使用。
如果您正在寻找将在您的应用程序的许多地方使用的更清洁的解决方案,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")
注释
value
您可以在属性内的 EL 中使用条件运算符:
<h:outputText value="#{verifyTxnList.resolved == 'Y' ? 'Yes' : 'No'}"/>
如果你能得到的只是Y
或N
然后:
<h:outputText value="#{verifyTxnList.resolved eq 'Y'?'Yes':'No'}"/>