2013-03-07 5 views
1

Когда я использую командную кнопку PrimeFacesPrimeFaces Command Button vs. По умолчанию кнопки Command

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

Я не вижу сообщения о валидации для входов (как по умолчанию h: те или PrimeFaces p: из них.) Например, с

<f:validateRequired /> 

Когда я использую командную кнопку по умолчанию, как

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

Я вижу проверки. Что может быть причиной этой разницы?

Я использую Prime Faces 3.5 с Mojarra 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 по умолчанию, и' ч: commandButton' не является AJAX по умолчанию. Почтовый код для всей формы. Возможно, вы просто не обновили поле сообщений проверки с помощью кнопки «Перья». – partlov

+0

Добавьте 'update =" @ form "' to 'p: commandButton' и посмотрите, отображаются ли сообщения об ошибках. – partlov

+0

Спасибо, Partlov, который был подсказкой, в которой я нуждался! update = "@ form" делает трюк. Но также ajax = "false". Если я использую ajax = "false", также корректно обновляется . С уважением, карон. – Caron

ответ

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

+0

Вы имеете в виду, что это произойдет без установки обновления? Если это так, я отредактирую свой ответ. – bjedrzejewski

+1

С обновлением вы контролируете, какие части обновлены, с процессом вы контролируете, что подано. С помощью этого обновления вы обновляете форму (с сообщениями, чтобы сообщения были видны). Без обновления вы просто не увидите сообщений. – partlov