2013-10-07 5 views
0

У меня есть selectOneListBox и кнопкаDynamic SelectOneListBox неудачу проверки на процесс

<p:selectOneListbox id="somelistBox" value="#{bean.selectedItem}" styleClass="listBox"> 
    <f:selectItems value="#{bean.list}" var="item" itemValue="#{item}" itemLabel="#{preparer.prepare(item)}"/> 
</p:selectOneListbox> 
<p:commandButton id="somebutton" process="@(.listBox)" update="@(.listBox)"/> 

и боб

@Component 
public void class Bean 
{ 
    private List<Item> list; 

    private Item selectedItem; 

    public List<Item> getList() 
    { 
     return list; 
    } 

    public void getSelectedItem() 
    { 
     return selectedItem; 
    } 

    public void setSelectedItem(Item selectedItem) 
    { 
     this.selectedItem = selectedItem; 
    } 
} 

Однако, когда я нажимаю кнопку проверка не на selectOneListBox во время АЯКС поста. Из того, что я прочитал, это может произойти, когда вы пытаетесь установить связанный объект в bean-компоненте с неправильным типом объекта, однако мой selectOneListBox содержит список «Items», и значение выбраноItem, которое также является «Item», поэтому я не вижу, где я ошибаюсь.

+0

Я никогда не видел ничего подобного '@ (. ListBox)' before. Работает ли он, когда вы используете только 'process =" somelistBox "? Также: можете ли вы показать нам точную ошибку? – noone

+0

- его селектор; selectOneListBox имеет «listBox» как свой стильClass –

+0

Я не получаю сообщение об ошибке, действие на кнопке не работает, и список боится красного цвета; сообщение затем показывает, что проверка не удалась –

ответ

0

Я думаю, что моя проблема была вызвана непониманием работы броузеров. Они не знают java-объектов, просто строк, поэтому попытка передать объекты назад и вперед между браузером и сервером была невозможна. Вместо того, чтобы я изменил значение элемента на идентификатор элемента, а затем должен был получить этот объект на заднем конце с помощью вызова базы данных, т.е.

<p:selectOneListbox id="somelistBox" value="#{bean.selectedItem}" styleClass="listBox"> 
    <f:selectItems value="#{bean.list}" var="item" itemValue="#{item.id}" itemLabel="#{preparer.prepare(item)}"/> 
</p:selectOneListbox> 

, а затем некоторые называют на заднем конце, чтобы получить объект обратно от идентификатора, который передается сообщением ajax (я решил сделать это в конвертере).

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