Comment accéder aux propriétés enum dans EL?
Le suivant enum
.
public enum Constants
{
PAGE_LINKS(10);
//Other constants as and when required.
private final int value;
private Constants(int value){
this.value = value;
}
public int getValue(){
value;
}
}
Ce enum
est placé dans une application étendue bean comme si,
@ManagedBean
@ApplicationScoped
public final class ConstantsBean
{
private Constants constants;
public ConstantsBean() {}
public Constants getConstants() {
return constants;
}
}
Comment accéder à la valeur de PAGE_LINKS
en EL?
<p:dataGrid pageLinks="#{}".../>
Ce qui devrait être écrit dans #{}
? Est-il possible?
EDIT:
La modification de la fève de la manière suivante,
@ManagedBean
@ApplicationScoped
public final class ConstantsBean
{
public ConstantsBean() {}
public int getValue(Constants constants) {
return constants.getValue();
}
}
et ensuite l'accès à EL comme,
<p:dataGrid pageLinks="#{constantsBean.getValue('PAGE_LINKS')}".../>
fonctionne en quelque sorte, mais je ne crois pas en cette laide.
source d'informationauteur Tiny
Vous devez vous connecter pour publier un commentaire.
Ce, comme commenté par Sazzadur,
devrait fonctionner. Votre enum a un bon public getter pour son
value
de la propriété. Cependant, vous devez également vous assurer que vous avez défini leconstants
propriété du bean géré souhaité valeur d'enum. Vous avez à savoir de ne pas le faire dans l'extrait de code posté jusqu'à présent et donc il restenull
. EL ne de par leur conception ne pas imprimer quoi que ce soit quand une (base) de la propriété estnull
.Voici comment vous pouvez le configurer:
J'avais cependant renommer la propriété (et de lecture) à
pageLinks
pour une meilleure auto-documentability.Une alternative est d'utiliser OmniFaces
<o:importConstants>
basé sur votre question de l'histoire, vous êtes déjà familier avec OmniFaces et probablement aussi déjà l'utiliser dans votre projet actuel.Cette façon, vous n'avez pas besoin de mettre la chose dans une application étendue de haricot.
Vous pouvez également utiliser PrimeFaces Extensions' importEnum:
http://www.primefaces.org/showcase-ext/sections/utils/importEnum.jsf