2016-04-03 20 views
0

Aşağıdaki kod her satır Geçiş parametresi: iletişim

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

i düzenle butonuna tıklayın

iletişim içinde bir düzenleme düğmesi ekledik datatable bir düzen içinde bir datatable, uygular kutu (kod aşağıda) gösterilir, fakat girişler boş, ben istediğim şey iletişim kutusundaki satırın infosunu göstermek, ben hala yeni başlayan biriyim, her yeri aradım ... ama sonuç yok

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

Herhangi biri yardımcı olabilirse çok minnettar olurum, gerçekten buna ihtiyacım var

012 ,

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

Bu iletişim kutusudur buna id özelliği ekleyin:

+0

deneyin diyalog içindeki form bir id ve butona güncelleme = ": idOfForm" koydu. Ve aynı zamanda fasulye ViewScoped olarak değiştirin, RequestScoped nadirdir –

cevap

-1

Değişim aşağıdakilere komut düğmesi, ActionListener kullanın. aşağıdaki gibi

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

yönetilen fasulye fonksiyonu olmalıdır: Bu managedbean doğru nesneye karşılık, çünkü o zaman selectedPerson panel ızgara değerini değiştirmek. Bu eylem dinleyici butonuna tıklandığında denilen ve daha sonra aradığınız bulmak için kişilerin listesi üzerinden seçilen kişinin kimliği alır ve döngüler edilir: vermek

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

}