2013-07-12 8 views
0
списка выбора

Я знаю, что primefaces PickList только Alows событие передачи какимитировать OnClick событие primefaces

<p:ajax event="transfer" listener="#{bean.onTransfer}" /> 

Но я искал onTargetSelected события. Есть ли способ имитировать это?

Я думал о функции JQuery, связанной с событием click, но я не знаю, на каком элементе. Я видел, что, когда я выбираю строку в целевом списке, класс li преобразуется в u-state-highlight. Есть ли способ обнаружить изменение класса с помощью JQuery?

Чтобы вызвать метод bean-компонента, когда событие будет запущено, я подумал о том, что directfaces remoteCommand отправит идентификатор моего объекта.

У вас есть идея об этом мероприятии?

Примечание: Я видел, что есть выбор с целевыми значениями в исходном коде, но выбранное значение «выбрано» для каждого элемента, и я не знаю, что с этим связано.

Спасибо за помощь

ответ

0

У меня есть трюк. Я использую эту функцию JQuery:

$(document).ready(function(){ 
    $('.ui-picklist-target .ui-picklist-item td').click(function() { 
     var id = $(this).closest("li").attr("data-item-value"); 
     $('[id$=selectedItemId]').val(id); // Setting the value of my hidden input 
     updateSelectedTarget(); // Calling the remoteCommand function 
    }); 
}); 

я добавил это к моему Xhtml странице

<h:form> 
    ... 
    <p:pickList ...> 

    </p:pickList> 

    <h:inputHidden id="selectedItemId" value="#{modifierUOBean.selectedTargetId}"/> 
    <p:remoteCommand name="updateSelectedTarget" actionListener="#{modifierUOBean.onSelectedTarget}"/> 
</h:form> 

И боба:

private int selectedTargetId; // and getters and setters 

public void onSelectedTarget() { 
    // Do what you want with selectedTargetId which contains the id of selected item 
} 
+0

и что мне делать, когда мой список содержит объектов из MyType, и у меня уже есть конвертер для этого? Я не могу прочитать строку '$ ('[id $ = selectedItemId]'). Val (id);' вообще, поэтому я не знаю, как исправить это. – dasLort

+0

Что вы подразумеваете под 'не можете прочитать линия'? Мой список выше содержит объекты, но я только манипулирую объектами. Тема почти год назад, поэтому я советую вам создать новую тему. (Немного далеко в моей голове, чтобы ответить на ваш вопрос). –

+0

Я не понимаю синтаксис этого. Проблема, с которой я столкнулась, теперь решена, потому что на моей странице я отображал строки, но я думал, что я показываю объекты (toString). Тем не менее, мне пришлось использовать 'pickListVar.jq.on ('click', '. Ui-picklist-target li', function() {' вместо вашей строки – dasLort