2016-04-03 58 views
0

下面的代码实现布局内的数据表,在数据表我的每一行传递参数:对话框

<p:dataTable id="tbl" var="person" value="#{mybean.listPersons}" > 
      <p:column> 
       <f:facet name="header"> 
        <h:outputText value="Name " /> 
       </f:facet> 
       <h:outputText value="#{person.name}" /> 
      </p:column> 
      <p:column> 
       <f:facet name="header"> 
        <h:outputText value="Age :" /> 
       </f:facet> 
       <h:outputText value="#{person.age}" /> 
      </p:column> 
      <p:column> 
       <p:commandButton icon="ui-icon-pencil" 
       oncomplete="PF('dlg1').show();" action="mybean.setSelectedPerson(person)" /> 
      </p:column> 
</p:dataTable> 

当我点击编辑按钮,在对话框中添加编辑按钮框(代码如下)显示,但输入是空的,我想要的是显示在对话框行的信息,我仍然是一个初学者,我到处搜索......但没有结果

<p:dialog header="Modify" widgetVar="dlg1" > 
     <h:form > 
       <p:growl id="msgs" showDetail="true" /> 
       <h:panelGrid id="form2" value="#{myBean.person}" var="person"> 
         <p:outputLabel value="Name :" /> 
         <p:inputText value="#{person.name}" /> 
         <p:outputLabel value="Age :" /> 
         <p:inputText value="#{person.age}" /> 
         <p:commandButton value="Submit" action="#{myBean.modifyPerson(person)}" /> 
       </h:panelGrid> 
    </h:form> 
</p:dialog> 


@ManagedBean 
@RequestScoped 
public class muBean implements Serializable{ 
    private Person selectedPerson; 
    //getter and setter 

    public void modifyPerson(Person p) { 
     this.selectedPerson = p; 
    } 
} 

我会很感激,如果有人可以帮助,我真的需要这个

+0

尽量给对话框中的表单一个id并在按钮上放置update =“:idOfForm”。并且将bean更改为ViewScoped,RequestScoped很少见 –

回答

-1

更改命令按钮下面,使用一个ActionListener:

<p:commandButton icon="ui-icon-pencil" update=":persondlgid" oncomplete="dlg1.show();" actionListener ="mybean.findSelectedPerson"> 
    <f:param name="personalid" value="#{person.id}" /> 
<p:commandButton/> 

这是该对话框中,id属性添加到它。然后在面板网格的值更改为selectedPerson因为这相当于managedbean正确的对象:

<p:dialog header="Modify" widgetVar="dlg1" id="persondlgid" > 
    <h:form> 
      <p:growl id="msgs" showDetail="true" /> 
      <h:panelGrid id="form2" value="#{myBean.selectedPerson}" var="person"> 
      <p:outputLabel value="Name :" /> 
      <p:inputText value="#{person.name}" /> 
      <p:outputLabel value="Age :" /> 
      <p:inputText value="#{person.age}" /> 
      <p:commandButton value="Submit" action="#{myBean.modifyPerson(person)}" /> 
      </h:panelGrid> 
    </h:form> 
</p:dialog> 

管理bean功能应如下所示。单击该按钮时,这个动作监听器被调用,然后它检索所选择的人的ID和遍历人员名单找到你正在寻找一个:

public void findSelectedPerson(ActionEvent event){ 
    if(event.getComponent().getAttributes().get("personid") != null){ 
     Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 
     int personid = (params.get("personid")!= null) ? Integer.parseInt(params.get("personid")) : -1; 
     // Loop through the persons array 
     for(Person p : listPersons){ 
     if(p.getId() == personid){ 
      selectedPerson = p; 
      break; 
     } 
    } 

}

相关问题