Получить значение случайно сгенерированной таблицы jsf

Я новичок в этом, я использую простые лица и создаю динамическую таблицу, эта таблица данных получает свои значения из списка, созданного управляемым компонентом.

Мне нужно установить свойство другого управляемого компонента со значением столбца, сгенерированного таблицей данных.

Например: Col1 имеет определенное значение, я хочу щелкнуть по этому значению, и должно появиться диалоговое окно, отображающее это значение col1.

<p:dataTable id="dataTable" var="c" value="#{databaseSearch.customerList}"  
                                     paginator="true" rows="10" paginatorAlwaysVisible="false"
                                     paginatorTemplate="Page {CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}  Rows per page {RowsPerPageDropdown}"  
                                     rowsPerPageTemplate="5,10,15,30">     
<p:column>  
    <f:facet name="header">  
      <h:outputText value="Machine" />  
    </f:facet>  
    <p:commandButton id="xxx" value="#{c.machine}" action="#{updateEntry.setMachine(c.machine)}" ajax="true" onclick="dlg1.show();" styleClass="ui-Machinebutton"/>
                                    <!-- styleClass="ui-Machinebutton" -->
                            </p:column>

У управляемого компонента updateEntry есть методы получения и установки. Фасоль

@ManagedBean
@SessionScoped
public class UpdateEntry implements Serializable {

   public Long Machine;

    public Long getMachine() {
        return Machine;
    }

    public void setMachine(Long Machine) {
        this.Machine = Machine;
    }


}

Диалоговое окно

<p:dialog id="modalDialog" header="Modal Dialog" widgetVar="dlg1" modal="true" height="100" dynamic="True">  
<h:outputText value="#{updateEntry.machine}" />  
</p:dialog>

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

Цель

Когда нажата кнопка команды, я хочу, чтобы ее значение было передано управляемому компоненту, поскольку это случайно сгенерированная таблица данных, я не уверен, как я могу этого добиться.

Обновить

Оно работает ! Тот же код обновляет updateEntry.machine, но проблема заключается в том, что нажатие на кнопку открывает диалоговое окно перед обновлением updateEntry.machine до нового значения, в диалоговом окне отображается ранее выбранный параметр. «Действие» происходит до «Onclick»? Или это наоборот ? Мне нужно сначала обновить компонент, а затем открыть диалоговое окно, чтобы показать более новое значение. Я пробовал как True, так и False динамического свойства диалогового окна, не уверен, для чего это нужно.

Также мне нужно обновить страницу, чтобы получить новое значение, загруженное в диалоговое окно, иначе независимо от того, какую командную кнопку я нажимаю, она показывает мне значение командной кнопки, которую я сначала нажал, опубликовать обновление страницы, оно показывает значение команды кнопка была нажата последним.


person Telson Alva    schedule 30.07.2013    source источник


Ответы (2)


вы можете объявить новый объект для updateEntry внутри вашего текущего класса, c
затем в вашей кнопке действия вызовите метод в c, чтобы изменить значение машины updateEntry, например:

<p:commandButton id="xxx" value="#{c.machine}" action="#{c.change()}" ajax="true" onclick="dlg1.show();" styleClass="ui-Machinebutton"/>

в классе С

private void change(){
        //set updateEntry.machine value here
    }

так что ваше диалоговое окно должно выглядеть как

<p:dialog id="modalDialog" header="Modal Dialog" widgetVar="dlg1" modal="true" height="100" dynamic="False">  
<h:outputText value="#{c.updateEntry.machine}" />  
</p:dialog>
person ggDeGreat    schedule 30.07.2013
comment
Спасибо за ответ, но C - это переменная, созданная для заполнения таблицы данных, я обновил код для вашей справки. Дело в том, что «CommandButton» имеет случайно сгенерированное значение, когда я нажимаю на него, как я могу получить это случайно сгенерированное значение? - person Telson Alva; 30.07.2013

Я нашел проблему...

Я изменил код ниже, и это сработало!

<p:commandButton id="basic" value="#{c.machine}" action="#{updateEntry.setMachine(c.machine)}" ajax="true" oncomplete="dlg1.show();" styleClass="ui-Machinebutton"/>

Хитрость здесь заключалась в том, чтобы сначала установить переменную «Машина», а по завершении загрузить диалоговое окно, которое считывает ту же переменную «Машина».

person Telson Alva    schedule 30.07.2013