- Я создаю выражение 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, любая помощь приветствуется.