我可以用一个验证器验证两个相互依赖的字段吗?
<h:form>
<h:inputText value="#{logRegBean.person.name}" >
<f:validator validatorId="loginCorrectValidator" />
</h:inputText>
<h:inputSecret value="#{logRegBean.person.password}" />
<h:commandButton action="#{logRegBean.login}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
我想在数据库中搜索用户,如果有用户,我将测试密码(在db和输入中)是否匹配.但是如何在一个验证器中访问密码字段呢?我试图通过评估其他字段中的int值createValueExpression()
,但看起来我无法在那段时间访问该值,因为我总是得到空字符串.
我想比较两个日期(StartDate和EndDate)并检查一个日期是否在另一个日期之前.最简单的解决方案是在支持bean上执行此操作并将方法"短路".
但是,此验证不会与其他表单验证同时发生.例如,如果我有另一个需要验证的字段(除了日期)并且输入无效,我将只收到该特定字段的消息.只有当其他字段有效时,才会根据辅助bean获取日期验证.
有人有解决方案吗?
我们有一个基于JSF的Web应用程序,它将输入表单数据提交给Web服务,然后显示Web服务提供的响应.
它是Web服务,用于验证用户输入的数据.我不确定我们如何使用JSF validation
这里.根据我的理解,JSF验证视图中的各个组件.但每次发出Web服务请求的操作都非常昂贵.
相反,当用户提交表单时,我们会跳过所有验证,在action方法中发出Web服务请求.根据Web服务的响应,我们可以通过编程方式告知特定的UI组件是无效的吗?
你能否就此提出你的建议?
环境:-
JSF 2.0
WebSphere Application Server 8.5
Run Code Online (Sandbox Code Playgroud) 我想在我的一些输入组件中执行验证,例如<h:inputText>
使用一些Java bean方法.我应该使用<f:validator>
或<f:validateBean>
为此吗?我在哪里可以阅读更多相关信息?
我使用自定义验证器.困难在于我只需要检查两个字段inputText并进行比较.第一个字段必须大于第二个字段.如果没有,那么我必须显示带有错误信息的消息.所以我需要传递我的自定义验证器第一个inputText字段的值.为此,我需要读取验证器类中第一个InputText字段的值.如何在验证器类中获取必要组件的id?使用标签的解决方案不适合我.我需要直接转到所需的组件也许这可以通过FacesContext的任何方法完成?
你如何比较两个字符串在JSF验证器中的相等性?
if (!settingsBean.getNewPassword().equals(settingsBean.getConfirmPassword())) {
save = false;
FacesUtils.addErrorMessage(null, "Password and Confirm Password are not same", null);
}
Run Code Online (Sandbox Code Playgroud) 我有一个XHTML页面,其中有四个文本框
<h:column >
<f:facet name="header">
<h:outputText value="Start Date" />
</f:facet>
<h:inputText id="startDate" value="#{sampleVO.startDate}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="End Date" />
</f:facet>
<h:inputText id="endDate" value="#{sampleVO.endDate}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="Start Date" />
</f:facet>
<h:inputText id="startDate1" value="#{sampleVO.startDate}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="End Date" />
</f:facet>
<h:inputText id="endDate1" value="#{sampleVO.endDate}" />
</h:column>
Run Code Online (Sandbox Code Playgroud)
我需要在开始日期和结束日期进行验证.如果用户在id ="startDate"&id ="endDate"中输入一些开始和结束日期,请说开始日期:"01/01/2012"(1jan)和结束日期:01/31/2012并且如果用户输入某些日期在id ="startDate1"和id ="endDate1"id ="startDate1"应始终大于id ="endDate",即日期范围不应重叠
public class SampleServiceimpl implements SampleService {
private List<SampleVO> listOfSample;
//this function gets called when clicked on …
Run Code Online (Sandbox Code Playgroud) 我想在执行多个字段验证方面有一个关于组件getValue()
和getLocalValue()
方法之间差异的说明性解释:jsf一次验证两个字段.UIInput
如果字段已经过验证,这种方法的用法有何不同?该ValueHolder
API文档不回答这个问题非常有帮助.
我指的是BalusC的答案之一: JSF不支持跨领域验证,是否有解决方法?
我按照相同的方式,并提出如下代码:
在.xhtml中
<h:form id="form1">
<div>
<p:messages globalOnly="true" display="text" />
<h:inputHidden value="true">
<f:validator validatorId="fooValidator" />
<f:attribute name="input1" value="#{input1}" />
<f:attribute name="input2" value="#{input2}" />
<f:attribute name="input3" value="#{input3}" />
</h:inputHidden>
<h:panelGrid columns="3">
<h:outputText value="name 1: " />
<p:inputText binding="#{input1}" id="input11" value="#{testPage.input1}" />
<p:message for="input11" display="text"/>
</h:panelGrid>
<h:panelGrid columns="3">
<h:outputText value="name 2: " />
<p:inputText binding="#{input2}" id="input22" value="#{testPage.input2}" />
<p:message for="input22" display="text"/>
</h:panelGrid>
<h:panelGrid columns="3">
<h:outputText value="name 3: " />
<p:inputText binding="#{input3}" id="input33" value="#{testPage.input3}" />
<p:message for="input33" display="text"/>
</h:panelGrid>
<p:commandButton value="Submit" action="#{testPage.submitValidator}" …
Run Code Online (Sandbox Code Playgroud) jsf ×9
validation ×8
jsf-2 ×4
components ×1
date-range ×1
java ×1
javabeans ×1
lifecycle ×1
primefaces ×1