Assuming we have a of labels to be displayed by type.
label.type.a = This is label A
label.type.b = This is label B
label.type.c = This is label C
label.type.d = This is label D
To display the label by type in xhtml, the simplest way it to use a rendered attribute
<h:outputLabel value="#{lbl['label.type.a']}" rendered="#{myType == 'A'}" />
<h:outputLabel value="#{lbl['label.type.b']}" rendered="#{myType == 'B'}" />
<h:outputLabel value="#{lbl['label.type.c']}" rendered="#{myType == 'C'}" />
<h:outputLabel value="#{lbl['label.type.d']}" rendered="#{myType == 'D'}" />
Instead of using the above sample, I would prefer to use two lines to achieve the same effect.
especially when the list of type are long.
<ui:param name="typeLabel" value="label.type.#{myType}" />
<h:outputLabel value="#{lbl['typeLabel']}" />
Done!!