Создать MethodExpression, содержащий метод с параметром типа object - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь создать выражение 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)
...