Это должно работать нормально:
{{ 'http://' ~ app.request.host }}
Чтобы добавить фильтр, подобный «trans», в том же теге используйте
{{ ('http://' ~ app.request.host) | trans }}
Как указывает Адам Элсодани, вы также может использовать интерполяцию строк, для этого требуются строки с двойными кавычками:
{{ "http://#{app.request.host}" }}
Ваш вложенный класс (который не является подклассом, кстати) не помечен как статический, поэтому он является внутренним классом, который требует экземпляра класс кодирования (JavaApp1) для его создания.
Опции:
JavaApp1
вообще) JavaApp1
как «охватывающий экземпляр»: GenTest x = new JavaApp1().new GenTest();
Лично я бы пошел с второй подход - вложенные классы в Java имеют несколько странностей вокруг них, поэтому я бы использовал классы верхнего уровня, если у вас нет веских причин сделать его вложенным. (Окончательный вариант особенно беспорядочен, IMO.)
Дополнительную информацию о внутренних классах см. В разделе 8.1.0 JLS .
class Test {
static class GenTest { // nested class with static
static void oldFunction() { // static method
System.out.println("don't use that");
}
void newFunction() { // non-static method
System.out.println("That's ok.");
}
}
public static void main (String[] args) {
GenTest.oldFunction(); // call static method
GenTest two = new GenTest(); // call non-static method
two.newFunction();
}
}
Java Online java
Пожалуйста, используйте
static class GenTest()......
Класс GenTest
является нестатическим классом и поэтому должен быть создан в экземпляре JavaApp1
. Если вы выполняете static class GenTest
то, что у вас есть, иначе вам нужно создать экземпляр JavaApp1
и создать GenTest
в нестационарном методе.
Класс вложен, что означает, что ваш вложенный класс не является статичным, что означает, что вы должны создать объект для вложенного класса через объект основного класса. что это означает, что ваш psvm должен быть таким.
public static void main(String[] args) {
JavaApp1 a=new JavaApp1(); //create an object for the main class
JavaApp1.GenTest x=a.new GenTest();
x.oldFunction();
x.newFunction();
}
Он должен быть static class GenTest
, поскольку вы создаете его экземпляр из статического метода.
Также, как правило, внутренние классы должны быть статическими.
Thar, потому что GenTest определяется с учетом контекста JavaApp1. Поэтому вы можете ссылаться на него, если у вас нет экземпляра JavaApp1. Измените его на static class
, чтобы он работал.
static class GenTest...
Способ, которым вы вызываете, не является правильным способом сделать это. Поскольку внутренний класс GenTest
является членом JavaApp1
, правильным способом его вызова будет
GenTest x = new JavaApp1().new GenTest();
. Используя его, ваш класс будет правильно компилироваться.