2016-07-07 2 views
0

У меня есть следующие управляемые Bean:Как выполнить управляемый метод bean на selectOneMenu?

import javax.faces.bean.ManagedBean; 

@ManagedBean 
public class MyBean { 

    public void mostrarCentroSeleccionado() { 
     System.out.println("Value changed"); 
    } 

} 

А внутри моего .xhtml файла следующие selectOneMenu:

<p:selectOneMenu value="#{MyBean.centros.idcentro}" > 

    <p:ajax event="change" listener="#{MyBean.mostrarCentroSeleccionado}" /> 

    <f:selectItem itemLabel="Seleccione un centro" itemValue="" /> 
    <f:selectItems value="#{MyBean.centros}" /> 
</p:selectOneMenu> 

Когда я запускаю этот код я получаю следующее исключение:

javax.el.MethodNotFoundException 

Заранее спасибо

+1

Если ваш слушатель не принимает участие в мероприятии, вы должны использовать 'listener =" # {myBean.mostrarCentroSeleccionado()} "' – Holger

+0

Полный код сделает этот вопрос недостижимым ... на самом деле ответ @Holger работал для меня – Termosfera

ответ

0

Проблема заключалась в теге:

<p:ajax listener="#{MyBean.function()}"/> 

Функция должна иметь "()" becouse I'm не принимает событие.

0

Если решения Holger работают, все нормально.

НО: Это ужасно, чтобы приступить к запуску Java Class Name с буквой в нижнем регистре. Вы можете начать с заглавной буквы, и JSF будет управлять ею для вас, поэтому вы все равно можете использовать listener = "# {myBean.mostrarCentroSeleccionado()}" Если это не соответствует вашим требованиям, вы можете использовать @ManagedBean (name = «myBean») Вместо myBean вы можете выбрать, что захотите.

+0

Если вы немного знаете о PrimeFaces, вы поймете, что здесь есть один из двух вариантов. 1- Что-то неявное или неправильное в теге xhtml или атрибуте. 2- Проблема с методом для выполнения Все, что вам нужно, это просто привести вас в контекст. Это не имеет значения или важно. – Termosfera

Смежные вопросы