Даже зная, что немного поздно, и даже зная, что это немного взломать - я использовал следующее решение для достижения желаемого результата.Если вы любитель Java-Naming-Conventions, советую прекратить читать здесь ...
Наличие такого класса, определяющего константы, сгруппированные по пустым классам для создания иерархии:
public class PERMISSION{
public static class PAGE{
public static final Long SEE = 1L;
public static final Long EDIT = 2L;
public static final Long DELETE = 4L;
...
}
}
можно использовать из java как PERMISSION.PAGE.SEE
для получения значения 1L
Чтобы добиться аналогичной возможности доступа из EL-выражений, я сделал это: (Если тамэто бог кодирования - надеюсь, он простит меня: D)
@Named(value="PERMISSION")
public class PERMISSION{
public static class PAGE{
public static final Long SEE = 1L;
public static final Long EDIT = 2L;
public static final Long DELETE = 4L;
...
//EL Wrapper
public Long getSEE(){
return PAGE.SEE;
}
public Long getEDIT(){
return PAGE.EDIT;
}
public Long getDELETE(){
return PAGE.DELETE;
}
}
//EL-Wrapper
public PAGE getPAGE() {
return new PAGE();
}
}
наконец, EL-выражение для доступа к тому же Long
становится: #{PERMISSION.PAGE.SEE}
- равенство для Java и EL-Access,Я знаю, что это вне какого-либо соглашения, но оно прекрасно работает.