【发布时间】:2013-03-07 09:51:42
【问题描述】:
当我使用 PrimeFaces p:commandButton
<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>
【问题讨论】:
-
主要区别在于
p:commandButton默认为AJAX,h:commandButton默认为非AJAX。整个表格的邮政编码。也许您只是没有使用 primefaces 按钮更新验证消息字段。 -
将
update="@form"添加到p:commandButton并查看是否显示错误消息。 -
感谢 partlov,这是我需要的提示! update="@form" 可以解决问题。但也有 ajax="false"。如果我使用 ajax="false" ,
也会正确更新。问候卡隆。 -
是的,在这种情况下,非 AJAX 请求按钮将充当
h:commandButton。 -
@parlov:你想创建一个包含所有这些信息的答案吗?赞成的答案在解释事情方面并不是那么好。否则我想写一个包含所有细节的答案。
标签: jsf primefaces commandbutton