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



我使用的是JSF2.0

我已经使用了一个验证器来验证输入文本,但是没有出现msg来表明输入是错误的!

更新:

是否有一种方法在提交之前验证输入文本,就在输入输入文本之后?

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>

谢谢

您需要添加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标记"捕获"的消息。

请粘贴整个页面的代码。

然而可能的问题是:

  • 您没有在页面中使用h:message或h:messages标记。只有在页面中使用了其中任何一个时,才会显示消息
  • 或者您的文本字段不能在h:表单中包含
  • 还要注意,当文本字段为空时,不会触发范围验证器。
  • 对于有用的消息,在文本字段中使用requiredMessage="whatever" validatorMessage="whatever"属性

为了在不提交表单的情况下验证<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所说。

最新更新