2013-03-07 119 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