2013-04-10 78 views
1

該項目使用Primefaces 3.5,JSF 2.0,Oracle數據庫。Backing bean方法從輸入中獲取null

的觀點:

<h:form id="schedule" class="schedule"> 

// more JSF and forms and dialogs 

<p:dialog widgetVar="patientDialog" dynamic="true" header="Find Patient" showEffect="clip" hideEffect="explode" modal="true" > 
      <h:form id="frmPatient"> 
       <h:panelGrid id="findPatient" columns="1"> 
        <h:panelGrid id="findPatientParameters" columns="2"> 
         <h:outputLabel value="Firstname: " /> 
         <p:inputText id="name" label="name" size="15" value="#{waitinglistBean.name}" /> 
         <h:outputLabel value="Patient Code: " /> 
         <p:inputText id="pcode" label="pcode" size="15" value="#{waitinglistBean.pcode}" /> 
         <br /> 
         <p:commandButton value="Search" process="name" actionListener="#{waitinglistBean.patients}" update="patients"/> 
        </h:panelGrid> 
        <h:panelGrid id="findPatientDetails" columns="1"> 
         <p:dataTable id="patients" var="patient" resizableColumns="true" scrollable="true" scrollWidth="1250" 
            scrollHeight="150" value="#{waitinglistBean.patients}" 
            rowKey="#{patient.PCode}" selection="#{waitinglistBean.selectedPatient}" 
            selectionMode="single" > 
          <f:facet name="header"> 
           Click "Select" button after selecting a row to select patient. 
          </f:facet> 
          <p:column width="150" headerText="Code"> 
           #{patient.PCode} 
          </p:column> 
          <p:column width="150" headerText="Family Name"> 
           #{patient.PLname} 
          </p:column> 
          <p:column width="150" headerText="First Name"> 
           #{patient.PFname} 
          </p:column> 
          <p:column headerText="Sex" > 
           #{patient.PSex} 
          </p:column> 
          <p:column headerText="Birthdate"> 
           #{patient.PBorn} 
          </p:column> 
          <p:column headerText="Street"> 
           #{patient.PStreet} 
          </p:column> 
          <f:facet name="footer"> 
           <p:commandButton id="viewButton" value="Select" icon="ui-icon-search" 
             oncomplete="patientDialog.hide()" 
             update=":frmDialogs:frmWaiting:tabView:patientDetails" 
             process="patients"/> 
          </f:facet> 
         </p:dataTable> 
        </h:panelGrid> 
       </h:panelGrid> 
      </h:form> 
     </p:dialog> 
    <p:dialog widgetVar="patientDialog" dynamic="true" header="Find Patient" showEffect="clip" hideEffect="explode" modal="true" > 
      <h:form id="frmPatient"> 
       <h:panelGrid id="findPatient" columns="1"> 
        <h:panelGrid id="findPatientParameters" columns="2"> 
         <h:outputLabel value="Firstname: " /> 
         <p:inputText id="name" label="name" size="15" value="#{waitinglistBean.name}" /> 
         <h:outputLabel value="Patient Code: " /> 
         <p:inputText id="pcode" label="pcode" size="15" value="#{waitinglistBean.pcode}" /> 
         <br /> 
         <p:commandButton value="Search" process="name" actionListener="#{waitinglistBean.patients}" update="patients"/> 
        </h:panelGrid> 
        <h:panelGrid id="findPatientDetails" columns="1"> 
         <p:dataTable id="patients" var="patient" resizableColumns="true" scrollable="true" scrollWidth="1250" 
            scrollHeight="150" value="#{waitinglistBean.patients}" 
            rowKey="#{patient.PCode}" selection="#{waitinglistBean.selectedPatient}" 
            selectionMode="single" > 
          <f:facet name="header"> 
           Click "Select" button after selecting a row to select patient. 
          </f:facet> 
          <p:column width="150" headerText="Code"> 
           #{patient.PCode} 
          </p:column> 
          <p:column width="150" headerText="Family Name"> 
           #{patient.PLname} 
          </p:column> 
          <p:column width="150" headerText="First Name"> 
           #{patient.PFname} 
          </p:column> 
          <p:column headerText="Sex" > 
           #{patient.PSex} 
          </p:column> 
          <p:column headerText="Birthdate"> 
           #{patient.PBorn} 
          </p:column> 
          <p:column headerText="Street"> 
           #{patient.PStreet} 
          </p:column> 
          <f:facet name="footer"> 
           <p:commandButton id="viewButton" value="Select" icon="ui-icon-search" 
             oncomplete="patientDialog.hide()" 
             update=":frmDialogs:frmWaiting:tabView:patientDetails" 
             process="patients"/> 
          </f:facet> 
         </p:dataTable> 
        </h:panelGrid> 
       </h:panelGrid> 
      </h:form> 
     </p:dialog> 
    // more JSF and dialogshizzle 
</h:form> 

的支持bean:

@ManagedBean(name="waitinglistBean") 
@ViewScoped 
public class WaitinglistBean implements Serializable 
{ 
private Patients patient; 
private OrWaitinglist orWaitinglist; 
private List<Patients> patients = new ArrayList<Patients>(); 
private String name; 
private Integer pcode; 

public WaitinglistBean() { 

} 

public void setSelectedPatient(Patients patient) { 
    this.patient = patient; 
} 
public Patients getSelectedPatient() { 
    return patient; 
} 
public OrWaitinglist getOrWaitinglist() { 
    return orWaitinglist; 
} 
public void setOrWaitinglist(OrWaitinglist orWaitinglist) { 
    this.orWaitinglist = orWaitinglist; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public Integer getPcode() { 
    return pcode; 
} 
public void setPcode(Integer pcode) { 
    this.pcode = pcode; 
} 

public List<Patients> getPatients() { 
    PatientsDao patientsDao = new PatientsDaoImpl(); 
    patients = patientsDao.getSearchPatient(name, pcode); 
    System.out.println(name + " " + pcode); 
    return patients; 
} 

public void createOrWaitinglist() 
{ 
    orWaitinglist.setPatients(patient); 
} 

所以第一用戶輸入一個字符串: 「名字」 和一個整數: 「病人代碼」。 當他打了「搜索」按鈕,它激發了的ActionListener =「#{} patientBean.patients該 內部命令按鈕,該方法需要有自己制定者/吸氣2個參數name和P碼。

當我看在控制檯中,它向我顯示了這兩個參數的打印輸出,並且它們是兩次「null」,所以這意味着來自JSF頁面的參數不會被傳遞到支持bean,儘管inputText的值已經被設置爲backingbean集合方法:價值=「#{} patientBean.name」

我的問題,採用這些制定者,但我仍然得到空值現在爲什麼會出現這些空值我讀過幾個職位

編輯後,我仍然有同樣的問題;

+1

只需添加這兩種P的ID:inputText的收錄進搜索按鈕的過程屬性 – Jitesh 2013-04-10 11:42:26

+0

我添加過程=「名稱「我的命令按鈕,但仍然」空「 – JeroenVP 2013-04-10 12:08:15

+1

JSF代碼,包裝在HTML:窗體,? – 2013-04-10 12:13:19

回答

2

h:panelgrid到backingbean使用財產以後這樣的輸入組件發送值:

<p:commandButton value="Search" process="@(frmPatient:findPatientParameters :input)" 
      actionListener="#{patientBean.patients}" update="patients"/> 
+0

是使用屬性「進程」使其一切工作,也包裝在正確的形式內部/外部使其工作。所有! 發佈已更新爲工作解決方案 – JeroenVP 2013-04-12 09:40:50

相關問題