У меня проблемы, потому что у меня есть метод на Java, мне нужна функция для получения 2 значений, String и ItemSelectEvent, потому что я использую одну и ту же функцию несколько раз.

Как я могу отправить событие из XHTML?

Вот как я пытался это сделать:

<p:chart type="donut" model="#{bean.donut}">
    <p:ajax event="itemSelect" listener="#{bean.createModel("P", event)}" 
         update="grap"/>
</p:chart>

Метод bean:

public void createModel(String str, ItemSelectEvent event){
...
}

Но метод всегда получает "событие" как null, получает событие только тогда, когда я вызываю его так

<p:chart type="donut" model="#{bean.donut}">
    <p:ajax event="itemSelect" listener="#{bean.createModel}" 
         update="grap"/>
</p:chart>

Фасоль

public void createModel(ItemSelectEvent event){
...
}

Но мне нужно отправить дополнительную строку, заранее спасибо

2
Ivan Chavarria 28 Апр 2016 в 18:53

2 ответа

Лучший ответ

Вот как я решил проблему вместо

<p:chart type="donut" model="#{bean.donut}">
    <p:ajax event="itemSelect" listener="#{bean.createModel("P", event)}" 
         update="grap"/>
</p:chart>

Я сделал

<p:chart type="donut" model="#{bean.donut}">
    <p:ajax event="itemSelect" listener="#{bean.createModel}" onStart="bean.str('T')" 
         update="grap"/>
</p:chart>

И на bean-компоненте я сделал его атрибутом вместо параметра

-----------------Редактировать-------------------

Итак, у меня были проблемы со временем выполнения, и в итоге я вызвал такой метод:

<p:ajax ... listener="#{bean.method}"/>

И метод был объявлен так

method(itemSelectEvent e){
     method2("P", e);
}
method2(String option, itemSelectEvent e){
     ...
}

И сделал по одному методу для каждой опции, которую хотел вызвать

0
Ivan Chavarria 4 Май 2016 в 16:04

Попробуйте поместить строковый атрибут в f: attribute внутри p: chart , а затем перехватите его в своем методе компонента поддержки:

event.getComponent().getAttributes.get("attributeName");
0
Jaumzera 28 Апр 2016 в 18:29