- Я создаю MethodExpression напрямую через код Java.
- Он будет представлять собой вызов метода bean-компонента с таким параметром, как follow .
#{bean.method(TheObjectInstance)}
- Объект представляет собой простой настраиваемый объект pojo.
public class TheObject
{
public String value0 = "value0";
}
- Теперь мы создаем выражение MethodExpression, как показано ниже.
TheObject object = new TheObject();
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
ExpressionFactory factory = application.getExpressionFactory();
//Create method expression
MethodExpression methodExpression = factory.createMethodExpression(
context.getELContext(),
"#{bean.method(" + object + ")}",
null,
new Class<?>[] {TheObject.class});
- Выдает следующую ошибку.
javax.servlet.ServletException: Encountered "@" at line 1, column 87.
Was expecting one of:
"." ...
"(" ...
")" ...
"[" ...
"," ...
";" ...
">" ...
"gt" ...
"<" ...
"lt" ...
">=" ...
"ge" ...
"<=" ...
"le" ...
"==" ...
"eq" ...
"!=" ...
"ne" ...
"&&" ...
"and" ...
"||" ...
"or" ...
"*" ...
"+" ...
"-" ...
"?" ...
"/" ...
"div" ...
"%" ...
"mod" ...
"+=" ...
"=" ...
Я попробовал тот же код со строковым параметром и логическим объектом, и он отлично работает, но использование пользовательского объекта также генерирует ту же ошибку, если мы передаем сложный объект, например, UIComponent.
Я использую JSF 2.2, любая помощь приветствуется.
System.out.println(inputText)
и посмотрите на результат. Вы пытаетесь пройти именно это. Почему это правильный синтаксис для компонента в качестве параметра? Сделать шаг назад. Сначала подготовьте доказательство концепции в простом ванильном XHTML-файле. Гораздо проще определить дерево компонентов и поведение в XHTML+XML. Как только вы поняли это, вы можете безопасно переписать код Java таким образом, чтобы он создавал точно такой же формат выражения (или просто придерживаться чистого XHTML, потому что эта привязка Java и все остальное довольно плохая практика и делает код трудным для чтения и поддерживать). - person BalusC   schedule 14.05.2019System.out.println(object)
и посмотрите на результат. Вы пытаетесь пройти именно это. Почему это правильный синтаксис для объекта в качестве параметра? Сделать шаг назад. Сначала подготовьте доказательство концепции в простом ванильном XHTML-файле. Гораздо проще определить дерево компонентов и поведение в XHTML+XML. Как только вы поняли это, вы можете безопасно переписать код Java таким образом, чтобы он создавал точно такой же формат выражения (или просто придерживаться чистого XHTML, потому что эта привязка Java и все остальное довольно плохая практика и делает код трудным для чтения и поддерживать). - person BalusC   schedule 16.05.2019MethodExpression
с"#{bean.method(entity)}"
, а не"#{bean.method(" + entity + ")}"
, верно? Потому что в обычном файле XHTML это действительноentity
, а неcom.example.Entity@12345678
. - person BalusC   schedule 17.05.2019