如何将按下的按钮知识传递给p:对话框

时间:2014-10-16 22:27:12

标签: jsf primefaces dialog

我正在尝试帮助用户在提交表单上填写实体ID号码。我不能使用下拉,因为有1000个。

在PF对话框中,我可以将选定的值复制到主窗体,但我将actionaListener硬编码到commandLink中,告诉弹出对话框主窗体上的h:textInput框将值复制到和渲染。如果我有三个h:inputText框,那么我需要复制三个p:对话框。

例如在我的p:对话框中,我会在数据表中有一列:

 <h:commandLink value="Select This Item" onclick="PF('dlg').hide()">
    <f:ajax render=":myForm:text_field_1" event="click"
    listener="#{bean.popDownId1(item.id)}" />
 </h:commandLink>

如何将这些变量myForm:text_field_1(表单名称和字段)传递给p:对话框,以使其成为更通用的弹出对话框?还有一种方法可以不必为每个字段编写一个监听器方法(popDownId1,popDownId2等等)作为奖励,我还想将对话框外部化并将其包含在每个xhtml页面中,而不是剪切和粘贴正如我现在所做的那样。

这是更实际的代码:

form.xhtml

<h:form id="myForm">
   <h:panelGrid columns="3">
     <p:outputLabel value="Manager Employee Number: " />
     <h:panelGroup>
 <p:inputText id="managerId"
    title="Type Employee Id or click the ? to search for their Id"
    value="#{bean.department.manager}" >
    <f:validator validatorId="com.company.app.EmployeeIdValidator" />
 </p:inputText>&nbsp;
 <p:commandButton title="Click here if you don't know their Employee Number" 
    id="managerId" value="Lookup Id"
    onclick="PF('dlgManager').show();" type="button" >
    </p:commandButton>
   other fields and submit button
   </h:form>

  <p:dialog id="popup" modal="false" widgetVar="dlgManager" dynamic="true" >
     <f:facet name="header">
      <h:outputText value="Employee Number Finder" />
     </f:facet>
     <p>Search using any keyword.</p>
     <h:form>
       Keyword: <p:inputText id="search" value="#{employeeSearch.searchString}" />
       <p:commandButton value="Search"
       action="#{employeeSearch.searchByKeyword}">
       <f:ajax execute="@form" render="output" />
       </p:commandButton> (Enter keywords separated by spaces)


     <p:dataTable id="output" var="employee" value="#{employeeSearch.employees}">

 <p:column headerText="Action">

    <h:commandLink value="Select" onclick="PF('dlgManager').hide()">
    <f:ajax render=":myForm:managerId" event="click"
        listener="#{bean.popDownManagerId(employee.id)}" />
    </h:commandLink>
</p:column>
    other columns(employee name, phone number, etc...)
    </p:dialog>

你可以看到我需要复制对话框,并为我希望进行员工编号查询的表单上的每个字段稍微调整一下。

的onclick = “PF(的 'dlgManager')表示();” &GT;
的onclick = “PF(的 'dlgSupervisor')表示();” &GT;
的onclick = “PF(的 'dlgFloorChief')表示();” &GT;

修改

当应用BalusC的答案时,如果我添加第二个查找Id按钮,则选择员工ID的弹出对话框有一个仅与ManagerId字段绑定的命令链接

action="#{bean.popDownManagerId(employee.id)}"

此外,当按下第二个查找ID按钮时,仍会列出先前的搜索结果,因此选择命令链接将引用错误的字段进行更新

enter image description here

弹出对话框

enter image description here

0 个答案:

没有答案