与JSF一起使用的验证器有问题

时间:2011-08-04 07:27:15

标签: java jsf jsf-2

我正在使用JSF2.0

我使用了一个有效输入文本的验证器,但似乎没有msg表示输入错误!

更新

他们是一种在提交之前验证inputtext的方法,只需在输入inputText之后?

JSF代码:

 <h:form id="form3">
      <p:panel visible="#{bean.form3Visible}" style="width: 900px;">
         <h:panelGrid width="width: 900px;"    columns="1">
         <p /> 
               <h:selectOneMenu value="#{bean.platform}">
                 <f:selectItem itemLabel="-- Select Plateform-- " itemValue="0"/> 
                 <f:selectItems value="#{bean.getMyListPaltform()}" />
                 <f:ajax listener="#{bean.UpdateChangeEnvironment()}"  render="Environment" />
                </h:selectOneMenu>



<h:panelGrid width="width: 160px;" columns="9">                                           
 <h:inputText id="ssFrom" value="#{bean.ssFrom}" required="true"  style="width: 18px" >    <f:validateLongRange   minimum="0" maximum="24"/>
 </h:inputText>
 <h:message  for="ssFrom" id="msgg" style="color:red" />
    </h:panelGrid>                                                                                       
      </p:panel>    
   </h:form>

我已经解决了我的问题,这是答案,也许它可以帮助其他人:

      <h:selectOneMenu value="#{bean.availabilityDisplay}" id="Display">
          <f:selectItem itemLabel="-- Select Display-- " itemValue="0"/> 
          <f:selectItems value="#{bean.getMyListDisplays()}"/>
          <f:ajax render="Target" />
      </h:selectOneMenu>


    <p:outputPanel id="Target">
      <h:selectOneMenu value="#{bean.frequency}" id="frequency" rendered="#{bean.availabilityDisplay == 'Availibility Histogramme' or bean.availabilityDisplay == 'Availibility line'}">
        <f:selectItem itemLabel="-- Select Frequency-- " itemValue="0"/>
        <f:selectItems  value="#{bean.getMyListFrequency()}"/>
     </h:selectOneMenu>
   </p:outputPanel>

谢谢

3 个答案:

答案 0 :(得分:3)

您需要添加h:messageh:messages标记以显示错误消息。

<h:inputText value="#{bean.ssFrom}" required="true" style="width: 18px" id="ssFrom"> 
    <f:validateLongRange minimum="0" maximum="59"/>
</h:inputText>

<h:message for="ssFrom" />
<!-- OR -->
<h:messages />

h:message用于显示单个字段的错误(由for属性连接)。 h:messages可用于显示页面的所有错误消息。如果您设置globalOnly="true",它将仅显示未被h:message标记“捕获”的邮件。

答案 1 :(得分:1)

可以粘贴整页代码吗。

但可能存在的问题可能是:

  • 您尚未在页面中使用h:message或h:messages标记。仅当页面中使用了其中任何一个时,才会显示消息
  • 或者您的文本字段不能用h:形式括起来
  • 另请注意,当文本字段留空时,不会触发范围验证器。
  • 对于有用的消息,请在文本字段
  • 中使用requiredMessage="whatever" validatorMessage="whatever"属性

答案 2 :(得分:1)

为了在不提交表单的情况下验证<h:inputText>,您需要添加ajax功能。

<h:inputText id="ssFrom" value="#{bean.ssFrom}" required="true"  style="width: 18px" >    
<f:validateLongRange   minimum="0" maximum="24"/>
<f:ajax execute="@this" event="keyup"/>
</h:inputText>

f:ajax代码会在每次启动事件时更新ssForm变量,如果发生验证错误,它将显示在<h:message for="ssFrom" />中,正如Mulmoth所说。