ValidationException未处理但被忽略

时间:2013-10-18 11:03:14

标签: jsf twitter-bootstrap jsf-2

我已经创建了一个自己的验证器,用于验证将被解析为java.util.Date的String输入,并且必须是以下格式:dd.MM.yyyy hh:MM:ss 当我现在提交输入时,验证被正确调用(也就是说,它也得到了正确的输入)并且非常有效,但即使验证器抛出ValidationException也没有任何反应,即表单已提交并显示网站。

所以,这是我的代码:

.xhtml的一部分:

<h:form>        
    <h:panelGrid columns="2">
        <h:outputText value="Date: (dd.MM.yyyy HH:mm:ss)" />
        <h:inputText id="date" value="#{controller.date}">
            <f:validator validatorId="dateValidator" />
        </h:inputText>
        <h:message for="date" style="color: red;" />
    </h:panelGrid>
    <h:commandButton value="Ok" action="#{controller.submit}" />
</h:form>

验证

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

    @Override
    public void validate(FacesContext context, UIComponent component, Object object)
            throws ValidatorException {

        String date = (String)object;
        FacesMessage message = null;

        if(date == null) {
            message = new FacesMessage("Date must be set");
        }

        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); 
        try {
            sdf.parse(date);
        } catch (ParseException e) {
            message = new FacesMessage("String hasn't the format: dd.MM.yyyy HH:mm:ss");
        }

        if(message != null) {
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
        throw new ValidatorException(message);
        }

    }

}

有没有人知道,为什么ValidationException没有显示而只是被忽略?

<小时/> 的更新:

好的,我弄清楚问题究竟是什么。验证器工作绝对完美,但它是引导模式的一部分,如果我单击提交按钮,对话框将消失而不显示错误。

干杯, metalhamster

0 个答案:

没有答案