Java 与JSF一起使用的验证器出现问题
我正在使用JSF2.0 我使用了一个验证程序来验证输入文本的有效性,但是没有任何消息表明输入是错误的 更新: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
<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。现在您可以看到,没有结束标记。请在客户端发布另一个关于输入验证的问题。您不应该在一个问题中混合不同的问题。将每个独立问题张贴在自己的问题中。