В настоящее время я запускаю свое веб-приложение в JSF 2.0, оно также использует Primefaces 2.2RC2.
Я знаю, что у Primefaces есть возможность иметь редактируемые строки, но для моего проекта я бы предпочел, чтобыпользователь нажимает на кнопку 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>
Так что мой вопрос заключается в следующемв настоящее время единственный способ, с помощью которого я получил это, состоит в том, чтобы в моем компоненте поддержки создать фиктивные временные глобальные переменные для установки параметров, чтобы при открытии моего диалога он мог ссылаться на значения, подобные
//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>
Я не уверен, что это правильный способ сделать это.Моя интуиция говорит мне, что это не так, потому что кажется крайне избыточным создавать временные переменные в моем Бине, чтобы я мог передать их в диалог.Кто-нибудь знает лучший, более краткий способ сделать это, поэтому мне не нужно создавать миллион временных переменных в моем компоненте поддержки?