В настоящее время я запускаю свое веб-приложение в JSF 2.0, оно также использует Primefaces 2.2RC2.Редактируемый Datatable с использованием диалога в JSF 2.0
Я знаю, что перфектуры дают вам возможность редактировать строки, но для моего проекта я бы предпочел, если пользователь нажимает на commandButton внутри таблицы, где отображается диалог, предварительно заполненный этими значениями строк, и пользователь может редактировать так.
Единственный способ, который я получил эту работу, чтобы в колонке, содержащей CommandButton, передать, что строки содержимое как Params, как на примере ниже:
<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>
Так что мой вопрос заключается в следующем, в настоящее время только способ, который я получил эту работу, чтобы в моей бэк-боба создать фиктивные временные глобальные переменные, чтобы установить Params так, когда диалог мой открывает он может ссылаться на значения, как этот
//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, чтобы я мог передать их в диалог. Кто-нибудь знает о более сжатом способе сделать это, поэтому мне не нужно создавать миллион временных переменных в моем бэкбоне?
Ааа я проглядел этот пример, спасибо любезно – medium