JSF 验证提交表单 [英] JSF validate on submit form

查看:30
本文介绍了JSF 验证提交表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理 JSF 2.0 表单,我有一个包含 2 个字段的 managedbean

I'm working on a JSF 2.0 form, I have a managedbean with 2 fields

import java.util.Date;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class StackOverflow {

    private Date firstDate;
    private Date secondDate;

    public void submit(){
       //validate here and show error on form
    }

}

和 xhtml 之类的:

and the xhtml like:

<h:inputText value="#{stackOverflow.firstDate}">
    <f:convertDateTime pattern="d/M/yyyy" />
</h:inputText>
<h:inputText value="#{stackOverflow.secondDate}">
    <f:convertDateTime pattern="d/M/yyyy" />
</h:inputText>

<h:commandLink action="#{stackOverflow.submit}">
    <span>Submit</span>
</h:commandLink>

我想验证第一个和第二个日期,第二个日期不在第一个日期之前

I want to validate the first and second date that the second date is not before the first date

推荐答案

方法之一:

<h:messages globalOnly="true"/>
<h:form>
    <h:inputText value="#{stackOverflow.firstDate}" binding="#{firstDate}">
        <f:convertDateTime pattern="d/M/yyyy" />
    </h:inputText>
    <h:inputText value="#{stackOverflow.secondDate}" validator="dateValidator">
        <f:attribute name="firstDate" value="#{firstDate}" />
        <f:convertDateTime pattern="d/M/yyyy" />
    </h:inputText>
    <h:commandButton value="Submit" action="#{stackOverflow.submit}"/>
</h:form>

@FacesValidator(value="dateValidator")
public class DateValidator implements Validator {

    @Override
    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        UIInput sd = (UIInput)component.getAttributes().get("firstDate");
        Date firstDate = (Date)sd.getValue();
        Date secondDate = (Date)value;
        if(!firstDate.before(secondDate)){
            FacesMessage msg = new FacesMessage("Entered dates are invalid: first date must be before second date");
            throw new ValidatorException(msg);
        }
    }

}

这篇关于JSF 验证提交表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆