我有一个页面包含一个嵌套在对话框中的表单和其他表单。 当在主窗体中单击按钮时,我需要将参数传递给对话框
<h:form>
<p:dataTable var="form" value="#{myBean.formList}">
<p:commandButton id="selectProduct"
update="selectProductForm" oncomplete="selectProductDlg.show()"
image="ui-icon-" >
<f:param name="formId" value="#{form.id}" />
</p:commandButton>
</p:dataTable>
</h:form>
<p:dialog>
...<h:form>
<p:commandButton action="#{myBean.setSelected}"
update="main_form"
oncomplete="if(#{myBean.errorText == 'SUCCESS'}){ selectProductDlg.hide();}"
value="Sec">
</p:commandButton>
我无法在myBean中看到带有代码的formId:
if (form == null) {
HttpServletRequest req = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
if(req.getParameter("formId") != null) {
formId = Long.valueOf(req.getParameter("formId"));
}
if (formId != null && !"".equals(formId)) {
form = formService.findById(formId);
}
}
我错了
感谢
答案 0 :(得分:22)
假设bean在视图范围内,只需在数据表列的命令按钮的action方法中将其设置为bean属性direclty。
<h:form>
<p:dataTable var="form" value="#{myBean.formList}">
<p:column>
<p:commandButton id="selectProduct"
action="#{myBean.setCurrentForm(form)}"
update="selectProductForm" oncomplete="selectProductDlg.show()"
image="ui-icon-">
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
<p:dialog>
<h:form>
<p:commandButton action="#{myBean.setSelected}"
update="main_form"
oncomplete="if(#{myBean.errorText == 'SUCCESS'}){ selectProductDlg.hide();}"
value="Sec">
</p:commandButton>
</h:form>
</p:dialog>
如果对话框中有取消按钮,则需要让其操作方法将其设置为null
。
没有必要在POST请求中摆弄原始HTTP请求参数。 <f:param>
应尽可能仅在GET请求中使用(例如<h:link>
,<h:button>
等。
答案 1 :(得分:-1)
我简单地调用了PDataTables的数据模型,如下所示。
此致 Khaleel