我目前在JSF 2.0中運行我的Web應用程序,它也使用Primefaces 2.2RC2。在JSF 2.0中使用對話框編輯數據表
我知道primefaces讓你具有可編輯行的能力,但對於我的項目,我更喜歡如果用戶單擊表中的某個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>
所以我的問題是這樣的,目前唯一我得到這個工作的方式是我支持bean中創建虛擬臨時全局變量來把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中創建臨時變量看起來非常冗餘,所以我可以將它們傳遞給對話框。有誰知道這樣做的更好更簡潔的方式,所以我不必在我的支持bean中創建一百萬個臨時變量?
啊我忽略了這個例子,千恩萬謝 – medium 2011-01-14 12:30:08