繁体   English   中英

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

[英]Problem with a validator used with 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:message或一个h: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

您能粘贴整个页面代码吗?

但是,可能的问题可能是:

  • 您尚未在页面中使用ah:message或h:messages标记。 仅在页面中使用其中任何一个时,才会显示消息
  • 否则,您的文本字段可能不会包含在ah:form中
  • 还要注意,当文本字段保留为空时,不会触发范围验证器。
  • 对于有用的消息,请在文本字段中使用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变量,并且如果发生验证错误,它将如Mulmoth所说的那样显示在<h:message for="ssFrom" />中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM