你可以比较一下Class#getName() http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getName--或者,也许更好,Class#getSimpleName() http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getSimpleName-- to a String
.
<h:link rendered="#{model['class'].simpleName eq 'ClassA'}">
#{errorMessage1}
</h:link>
<h:link rendered="#{model['class'].simpleName eq 'ClassB'}">
#{errorMessage2}
</h:link>
注意指定的重要性Object#getClass()
带大括号表示法['class']
因为class
是一个保留的 Java 文字,否则会在 EL 2.2+ 中引发 EL 异常。
类型安全的替代方案是添加一些public enum Type { A, B }
随着public abstract Type getType()
到模型的公共基类。
<h:link rendered="#{model.type eq 'A'}">
#{errorMessage1}
</h:link>
<h:link rendered="#{model.type eq 'B'}">
#{errorMessage2}
</h:link>
在 EL 2.2+ 中,任何无效值都会在运行时引发 EL 异常。
如果您正在使用OmniFaces http://omnifaces.org,从 3.0 版本开始你可以使用#{of:isInstance()} http://omnifaces.org/docs/vdldoc/3.0/of/isInstance.fn.html.
<h:link rendered="#{of:isInstance('com.example.ClassA', model)}">
#{errorMessage1}
</h:link>
<h:link rendered="#{of:isInstance('com.example.ClassB', model)}">
#{errorMessage2}
</h:link>