创建StatusConverter类:
/**
* Date: 14-6-29
* @author: Zero
*/
@FacesConverter(value = "StatusConverter", forClass = String.class)
public class StatusConverter implements javax.faces.convert.Converter{
//其他方法....
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (context == null || component == null) {
throw new NullPointerException();
}
// 如果value为空则返回空字符串
if (value == null) {
return "";
}
//在xhtml中属性名以"status-"作为前缀
for (Map.Entry<String, Object> entry : component.getAttributes().entrySet()) {
String status = entry.getKey().toString().replace("status-", "");
if (status.equals(value.toString())) {
return entry.getValue().toString();
}
}
return value.toString();
}
}
使用:
<h:outputText value="#{channel.status}"> <f:converter converterId="StatusConverter"/> <f:attribute name="status-1" value="开"/> <f:attribute name="status-0" value="关"/> </h:outputText>
注意:component.getAttributes() 是从UIComponent中获取的,所以设置属性时是放在<h:outputText> </h:outputText>里面,而不是<f:converter> 里面