`

JSF Converter-定义通用的 状态 转换器

阅读更多

 

创建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> 里面

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics