Я пытаюсь создать выражение MethodExpression в пользовательском компоненте для вызова метода bean-компонента с параметром типа object.
Пользовательский компонент:
MyObject myobj = new MYObject();
HtmlCommandLink cl = new HtmlCommandLink();
Application app = context.getApplication();
MethodExpression methodExpression =
app.getExpressionFactory().createMethodExpression(
FacesContext.getCurrentInstance().getELContext(),
"#{bean.detail("+myobj+")}", String.class, new Class<?>[]{com.package.MyObject.class});
cl.setActionExpression(methodExpression);
А в bean-компоненте у меня есть:
public String detail(MyObject myobj){
System.out.println(myobj.getInfo());
return "done";
}
Когда я запускаю код, я получаю ошибку разбора!Я попробовал тот же код с параметром String в качестве параметра, и он работает нормально, но использование объекта вызывает сообщение об ошибке.
Как передать объект в bean-компонент?
Спасибо за вашу помощь!
Обновление:
Schwerwiegend: представление при визуализации ошибок [/detail.xhtml] javax.el.ELException: синтаксический анализ ошибок: # {bean.detail (com.package.MyObject@7ae3b38f)}на com.sun.el.lang.ExpressionBuilder.createNodeInternal (ExpressionBuilder.java:213) на com.sun.el.lang.ExpressionBuilder.build (ExpressionBuilder.java:237) на com.sun.el.lang.ExpressionBuilder.createMet(ExpressionBuilder.java:302) в com.sun.el.ExpressionFactoryImpl.createMethodExpression (ExpressionFactoryImpl.java:96) в org.jboss.weld.util.el.ForwardingExpressionFactory.createMethodExpression:Factory.forj.weld.el.WeldExpressionFactory.createMethodExpression (WeldExpressionFactory.java:53)
Вызвано: com.sun.el.parser.ParseException: найдено "@" в строке 1,колонка 44. Ожидал одного из: "."... "(" ... ")" ... "[" ... "," ... ";"... ">" ... "gt" ... "<" ... "lt" ... "> =" ... "ge" ... "<=" ... "le"... "==" ... "eq" ... "! =" ... "ne" ... "&&" ... "и" ... "||"... "или" ... "*" ... "+" ... "-" ... "?"... "/" ... "div" ... "%" ... "mod" ... "+ =" ... "=" ... </p>
at com.sun.el.parser.ELParser.generateParseException(ELParser.java:2963)