将参数传递到同一页面中的对话框 [英] Pass parameter to dialog in the same page
问题描述
我有一个页面,其中包含一个窗体和嵌套在对话框中的其他窗体. 在主窗体中单击按钮时,我需要将参数传递给对话框
I have a page contains a form and other form nested in a dialog. I need to pass parameter to dialog when button clicked in the main form
<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:
i can not see formId in myBean with code:
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);
}
}
我在哪里错 谢谢
推荐答案
假定该bean在视图范围内,只需在datatable列中的命令按钮的操作方法中将其设置为bean属性值即可. >
Assuming that the bean is in the view scope, just set it as a bean property direclty in the action method of the command button in the datatable column.
<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
.
If you have a cancel button in the dialog, you need to let its action method set it to null
.
在POST请求中无需摆弄原始的HTTP请求参数. <f:param>
应该尽可能仅在GET请求中使用(例如<h:link>
,<h:button>
等).
There's no need to fiddle around with raw HTTP request parameters in POST requests. The <f:param>
should as much as possible be used in GET requests only (e.g. <h:link>
, <h:button>
, etc).
这篇关于将参数传递到同一页面中的对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!