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>
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);
            } 
        }
where am i wrong thanks
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>
If you have a cancel button in the dialog, you need to let its action method set it to null.
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With