Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与JSF一起使用的验证器出现问题_Java_Jsf_Jsf 2 - Fatal编程技术网

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

Java 与JSF一起使用的验证器出现问题,java,jsf,jsf-2,Java,Jsf,Jsf 2,我正在使用JSF2.0 我使用了一个验证程序来验证输入文本的有效性,但是没有任何消息表明输入是错误的 更新: <h:form id="form3"> <p:panel visible="#{bean.form3Visible}" style="width: 900px;"> <h:panelGrid width="width: 900px;" col

我正在使用JSF2.0

我使用了一个验证程序来验证输入文本的有效性,但是没有任何消息表明输入是错误的

更新:

 <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>
他们的方法是在提交前验证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>

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

 <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:消息可用于显示页面的所有错误消息。如果您设置了
globalOnly=“true”
,它将仅显示未被
h:message
标记“捕获”的消息。

请粘贴整个页面代码

然而,可能出现的问题如下:

  • 您尚未在页面中使用h:message或h:messages标记。仅当页面中使用了其中任何一条时,才会显示消息
  • 或者,您的文本字段可能不包含在h:格式中
  • 还请注意,文本字段留空时不会触发范围验证程序。
  • 对于有用的消息,请使用文本字段中的属性

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

您好,谢谢您的回复,我已尝试添加::message,但什么也没有发生!!我还有一个问题,验证器会在输入文本或提交表单后使输入文本有效吗?因为我想在提交文档之前验证文本form@rym验证程序将在提交表单后进行验证。请将您当前的代码片段附加到您的问题。请添加一个如上所述的结束语
(编辑),然后重试。我按照您应该经常做的方式格式化了您的XML。现在您可以看到,
没有结束标记。请在客户端发布另一个关于输入验证的问题。您不应该在一个问题中混合不同的问题。将每个独立问题张贴在自己的问题中。