2013-03-07 220 views
1

當我使用PrimeFaces命令按鈕PrimeFaces命令按鈕與默認命令按鈕

<p:commandButton action=#{bean.action} /> 

我沒有看到輸入驗證信息(包括默認h:者或PrimeFaces p:的。)例如與

<f:validateRequired /> 

當我使用默認的命令按鈕像

<h:commandButton action=#{bean.action} /> 

我確實看到驗證。造成這種差異的原因是什麼?

我使用的總理面臨3.5鑽嘴魚科2.1.18

<h:form id="reliefhourheadcopy-form"> 

     <h:panelGrid columns="1"> 
      <h:outputText value="Kopiere Entlastungsstunden von" /> 
      <h:outputText value="Semester: #{reliefHourHeadManagedBean.reliefHourHead.semester}" /> 
      <h:outputText value="Jahr: #{reliefHourHeadManagedBean.reliefHourHead.year}" /> 
      <h:outputText value="nach" />    
     </h:panelGrid> 

     <h:panelGrid columns="3"> 

      <h:outputText value="Semester:" /> 
      <p:selectOneMenu id="semester" value="#{reliefHourHeadManagedBean.semester}"> 
       <f:selectItems value="#{reliefHourHeadManagedBean.semesterTypes}" /> 
      </p:selectOneMenu> 
      <h:message for="semester" /> 

      <h:outputText for="yearSpinner" value="Jahr:" /> 
      <p:spinner id="yearSpinner" value="#{reliefHourHeadManagedBean.year}" maxlength="4" min="2000" max="2030" size="4"> 
       <f:validateRequired /> 
       <f:validateLongRange minimum="2000" maximum="2030" /> 
      </p:spinner> 
      <h:message for="yearSpinner" /> 

     </h:panelGrid> 

     <h:panelGrid columns="1" style="margin-top:25px"> 
      <p:commandButton action="#{reliefHourHeadManagedBean.copyReliefHourHead}" value="Kopieren" icon="ui-icon-copy" > 
       <f:param name="reliefhourhead_id" value="#{reliefHourHeadManagedBean.reliefHourHeadId}" /> 
      </p:commandButton> 
     </h:panelGrid> 

    </h:form> 
+4

主要區別是'號碼:commandButton'是AJAX在默認情況下,和'H:commandButton'非AJAX默認。郵政編碼爲整個表格。也許你只是沒有使用primefaces按鈕更新驗證消息字段。 – partlov 2013-03-07 09:55:21

+0

將'update =「@ form」'添加到'p:commandButton'並查看是否顯示錯誤消息。 – partlov 2013-03-07 10:02:50

+0

感謝partlov,這是我需要的提示!更新=「@形式」是否有用。但也是ajax =「false」。如果我使用ajax =「false」,也會正確更新。問候卡隆。 – Caron 2013-03-07 10:15:24

回答

3

的primefaces的commandButton將默認提交表單。然而,爲了得到形式更新,你需要添加update屬性:

<p:commandButton action="#{reliefHourHeadManagedBean.copyReliefHourHead}" value="Kopieren" icon="ui-icon-copy" update="@form"> 
       <f:param name="reliefhourhead_id" value="#{reliefHourHeadManagedBean.reliefHourHeadId}" /> 
      </p:commandButton> 
+0

它會提交整個表單,它不會更新整個表單。 – partlov 2013-03-07 10:14:08

+0

你的意思是說,這會發生,沒有把更新?如果是這種情況,我會編輯我的答案。 – bjedrzejewski 2013-03-07 10:15:21

+1

通過更新,您可以控制更新哪些零件,並通過流程來控制提交的內容。通過此更新,您可以更新表單(使用消息,因此消息將可見)。沒有更新,你只是看不到消息。 – partlov 2013-03-07 10:16:55