Я еще раз изучил декомпилированный код и заметил кое-что еще.Переменные на самом деле не являются статическими.Поэтому моя следующая идея заключалась в том, чтобы использовать вместо этого объект:
object KommenControler
{
val FORMATED_TIME = "formatedTime";
} // KommenControler
Но теперь все становится действительно ужасно:
public final class ….KommenControler$ extends java.lang.Object implements scala.ScalaObject{
public static final ….KommenControler$ MODULE$;
private final java.lang.String FORMATED_TIME;
public static {};
Code:
0: new #9; //class …/KommenControler$
3: invokespecial #12; //Method "<init>":()V
6: return
public java.lang.String FORMATED_TIME();
Code:
0: aload_0
1: getfield #26; //Field FORMATED_TIME:Ljava/lang/String;
4: areturn
Так что я получаю дополнительный класс, заканчивающийся на $, который имеет экземпляр-одиночканазывается MOUDLE $.И еще есть инспектор.Таким образом, доступ к переменной внутри jsp становится следующим:
final String formatedTime = (String) request.getAttribute (….KommenControler$.MODULE$.FORMATED_TIME ());
Это работает, как и ожидалось, и я лично могу жить с этим, но как я собираюсь объяснить это команде?
OfКонечно, если есть более простой способ, я хотел бы услышать об этом.