我是新手,我正在使用 primefaces 并生成一个动态表,这个数据表从托管 bean 创建的列表中获取它的值。
我需要使用数据表生成的列的值来设置另一个托管 bean 的属性。
例如:Col1,有一个特定的值,我想点击那个值,然后会出现一个对话框,显示 col1 的值
<p:dataTable id="dataTable" var="c" value="#{databaseSearch.customerList}"
paginator="true" rows="10" paginatorAlwaysVisible="false"
paginatorTemplate="Page {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} Rows per page {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15,30">
<p:column>
<f:facet name="header">
<h:outputText value="Machine" />
</f:facet>
<p:commandButton id="xxx" value="#{c.machine}" action="#{updateEntry.setMachine(c.machine)}" ajax="true" onclick="dlg1.show();" styleClass="ui-Machinebutton"/>
<!-- styleClass="ui-Machinebutton" -->
</p:column>
托管 bean 'updateEntry' 具有 getter 和 setter 方法。 豆
@ManagedBean
@SessionScoped
public class UpdateEntry implements Serializable {
public Long Machine;
public Long getMachine() {
return Machine;
}
public void setMachine(Long Machine) {
this.Machine = Machine;
}
}
对话框
<p:dialog id="modalDialog" header="Modal Dialog" widgetVar="dlg1" modal="true" height="100" dynamic="True">
<h:outputText value="#{updateEntry.machine}" />
</p:dialog>
我确实明白,为了将参数传递给对话框,我需要托管 bean 的帮助。但是,数据表是随机生成的,我无法传递该特定的随机值。那么如何传递命令按钮的随机值并在单击时设置托管 bean?
客观的
单击命令按钮时,我希望将其值传递给托管 bean,因为这是随机生成的 dataTable,我不确定如何实现。
更新
有用 !相同的代码更新 updateEntry.machine 但问题是因为在 updateEntry.machine 更新为新值之前单击按钮首先打开对话框,对话框显示先前单击的选项。'Action' 是否发生在 'Onclick' 之前?或者是周围的其他方式 ?我需要先更新 bean,然后打开对话框让它显示更新的值。我已经尝试过对话框的动态属性的 True 和 False ,不知道那是什么。
另外我需要刷新页面以获取对话框中加载的新值,否则无论我单击哪个命令按钮,它都会显示我第一次单击的命令按钮的值,发布页面刷新,它会显示命令的值按钮最后一次点击。