Редактируемый Datatable с использованием диалога в JSF 2.0

63
6

В настоящее время я запускаю свое веб-приложение в JSF 2.0, оно также использует Primefaces 2.2RC2.


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


Единственный способ, которым я получил это, - это в столбце, содержащем commandButton, передать содержимое этих строк в качестве параметров, подобных приведенному ниже примеру:


<p:dataTable var="car" value="#{myBean.cars}" id="carList">  
<h:column>
<h:inputText value="#{car.id}" style="width:100%"/>
</h:column>

<h:column>
<h:inputText value="#{car.name}" style="width:100%"/>
</h:column>
<h:column>
<h:commandButton actionListener=#{myBean.updateRow} onsuccess="editCardDialog.show()" >
<f:param name="carId" value=#{car.id} />
<f:param name="carName" value=#{car.name} />
</h:commandButton>
</h:column>

...
</p:dataTable>


Итак, мой вопрос заключается в том, что в настоящее время единственным способом, с помощью которого я работал, является то, что в моей поддержке bean создайте dummy temp глобальные переменные, чтобы установить параметры таким образом, когда мой диалог открывается, он может ссылаться на значения, подобные этому


     //myBean.java
private String tempCarId;
private String tempCarName;

public void setTempCarId(String tempCarId) {
this.tempCarId = carId;
}

public String getTempCarId() {
return tempCarId;
}

public void setTempCarName(String tempCarName) {
this.tempCarName = carName;
}

public String getTempCarName() {
return tempCarName;
}

public void updateRow(ActionEvent event) {

String carId = FaceContext...getParameterMap("carId");
String carName = FacesContext...getParameterMap("carName");

setTempCarId(carId);
setTempCarName(carName);
}


Затем в диалоговом окне я просто укажу эти временные переменные


    <p:dialog>
<h:inputText value=#{myBean.tempCarId} />
<h:inputText value=#{myBean.tempCarName} />
</p:dialog>

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

спросил(а) 2021-01-25T15:37:40+03:00 4 месяца, 2 недели назад
1
Решение
76

Просто замените outputTexts в диалоговом окне ниже с помощью inputTexts;


http://www.primefaces.org/showcase/ui/datatableRowSelectionByColumn.jsf

или


http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf

ответил(а) 2021-01-25T15:37:40+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема