Передать параметр в диалог на той же странице - PullRequest
14 голосов
/ 12 января 2012

У меня есть страница, содержащая форму и другую форму, вложенную в диалог.Мне нужно передать параметр в диалог, когда кнопка нажата в основной форме

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


Я не вижу formId в myBean с кодом:

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);
            } 
        }

где я не прав, спасибо

Ответы [ 2 ]

22 голосов
/ 12 января 2012

Предполагая, что bean-компонент находится в области видимости, просто установите его как direclty свойства bean-компонента в методе действия командной кнопки в столбце данных.

<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.

Нет необходимости возиться с необработанными параметрами HTTP-запроса в запросах POST.<f:param> следует максимально использовать только в запросах GET (например, <h:link>, <h:button> и т. Д.).

0 голосов
/ 27 января 2014

Я просто назвал модель данных PDataTables, как показано ниже.

  1. В бине Java Я обновляю данные из метода backFend receiveFdnsController.refreshData.
    1. Чтобы обновить данные в форме, которую я вызываю, обновляя datamodel как # {receiveFdnsController.newReceivedFdnsDataModel} после скрытия диалога. Более подробная информация показана ниже.

С уважением Khaleel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...