将参数传递到同一页面中的对话框 [英] Pass parameter to dialog in the same page

查看:47
本文介绍了将参数传递到同一页面中的对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个页面,其中包含一个窗体和嵌套在对话框中的其他窗体. 在主窗体中单击按钮时,我需要将参数传递给对话框

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆