Получить значение случайно сгенерированной таблицы 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)


arrow_upward
0
arrow_downward

вы можете объявить новый объект для 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

arrow_upward
0
arrow_downward

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

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

<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