Primefaces p:datatable:如何在p:对话框中编辑数据?
上下文 我有一个datatable,它有一个按钮,单击时会打开一个对话框。该对话框在p:inputExtArea中显示其他数据(xml内容) 问题 现在我想让这个p:inputExtArea可编辑,并将更改反映在datatable的对象中。我想在对话框中添加一个commandbutton来保存更改。如何获取对选定对象的引用 XhtmlPrimefaces p:datatable:如何在p:对话框中编辑数据?,primefaces,datatable,Primefaces,Datatable,上下文 我有一个datatable,它有一个按钮,单击时会打开一个对话框。该对话框在p:inputExtArea中显示其他数据(xml内容) 问题 现在我想让这个p:inputExtArea可编辑,并将更改反映在datatable的对象中。我想在对话框中添加一个commandbutton来保存更改。如何获取对选定对象的引用 Xhtml <h:form id="alltxform"> <p:dataTable id="tablealltx" var="transactio
<h:form id="alltxform">
<p:dataTable id="tablealltx" var="transaction" value="#{transactionListModel.txList}">
<p:column>
<p:commandButton update=":alltxform:xmlDetail" oncomplete="PF('dialog').show()">
<f:setPropertyActionListener value="#{transaction}"
target="#{transactionListModel.selectedTx}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:dialog header="Detail" widgetVar="dialog">
<p:outputPanel id="xmlDetail">
<p:inputTextarea readonly="false" id="xmlviewer"
value="#{transactionListModel.selectedTx.xml}" />
</p:outputPanel>
</p:dialog>
</h:form>
package model;
@Named
@SessionScoped
public class TransactionListModel implements Serializable {
private static final long serialVersionUID = 1L;
private List<TransactionVO> txList;
private TransactionVO selectedTx;
public TransactionVO getSelectedTx() {
return selectedTx;
}
public void setSelectedTx(TransactionVO selectedTx) {
this.selectedTx = selectedTx;
}
@PostConstruct
public void init() {
txList = new ArrayList<TransactionVO>();
}
public List<TransactionVO> getTxList() {
return txList;
}
public void clearList(){
txList = new ArrayList<TransactionVO>();
}
}
型号
<h:form id="alltxform">
<p:dataTable id="tablealltx" var="transaction" value="#{transactionListModel.txList}">
<p:column>
<p:commandButton update=":alltxform:xmlDetail" oncomplete="PF('dialog').show()">
<f:setPropertyActionListener value="#{transaction}"
target="#{transactionListModel.selectedTx}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:dialog header="Detail" widgetVar="dialog">
<p:outputPanel id="xmlDetail">
<p:inputTextarea readonly="false" id="xmlviewer"
value="#{transactionListModel.selectedTx.xml}" />
</p:outputPanel>
</p:dialog>
</h:form>
package model;
@Named
@SessionScoped
public class TransactionListModel implements Serializable {
private static final long serialVersionUID = 1L;
private List<TransactionVO> txList;
private TransactionVO selectedTx;
public TransactionVO getSelectedTx() {
return selectedTx;
}
public void setSelectedTx(TransactionVO selectedTx) {
this.selectedTx = selectedTx;
}
@PostConstruct
public void init() {
txList = new ArrayList<TransactionVO>();
}
public List<TransactionVO> getTxList() {
return txList;
}
public void clearList(){
txList = new ArrayList<TransactionVO>();
}
}
包模型;
@命名
@会议范围
公共类TransactionListModel实现可序列化{
私有静态最终长serialVersionUID=1L;
私人名单;
私人交易VO selectedTx;
公共事务VO getSelectedTx(){
返回selectedTx;
}
公共无效设置selectedTx(事务VO selectedTx){
this.selectedTx=selectedTx;
}
@施工后
公共void init(){
txList=新的ArrayList();
}
公共列表getTxList(){
返回txList;
}
公共无效清除列表(){
txList=新的ArrayList();
}
}
按钮
我想将此按钮添加到对话框中
<p:commandButton value="OK" onclick="PF('dialog').hide();" actionListener=""/>
我读过cellEdit事件,但这不是我真正需要的。为了保存更改,我需要在对话框中引用我的事务对象。您的意思是对话框看起来像-
<p:dialog header="Detail" widgetVar="dialog">
<p:outputPanel id="xmlDetail">
<p:inputTextarea readonly="false" id="xmlviewer"
value="#{transactionListModel.selectedTx.xml}" />
<p:commandButton value="OK" onclick="PF('dialog').hide();" actionListener=""/>
</p:outputPanel>
</p:dialog>
在更新:tablealltx:tablealltx之前,在yourAction方法中更新基础数据结构。您的意思是对话框看起来像-
<p:dialog header="Detail" widgetVar="dialog">
<p:outputPanel id="xmlDetail">
<p:inputTextarea readonly="false" id="xmlviewer"
value="#{transactionListModel.selectedTx.xml}" />
<p:commandButton value="OK" onclick="PF('dialog').hide();" actionListener=""/>
</p:outputPanel>
</p:dialog>
当然,在更新:tablealltx:tablealltx之前,在yourAction方法中更新基础数据结构。有时它就在我面前,而我却看不到它。由于某种原因,transactionListModel.selectedTx未设置并保持为空。我如何设置它?f:setPropertyActionListener在这里似乎不起作用,使用第一个按钮而不是使用bean的setter来填充setPropertyActionListener?我认为人们不应该直接打电话给他们,当然,我不认为从数据表中填充数据有那么糟糕。有时它就在我面前,而我却看不到它。由于某种原因,transactionListModel.selectedTx未设置并保持为空。我如何设置它?f:setPropertyActionListener在这里似乎不起作用,使用第一个按钮而不是使用bean的setter来填充setPropertyActionListener?我认为不应该直接调用。我不认为从数据表填充数据有那么糟糕