我有一个带有一些标签的p:wizard。在第一个标签中,用户选择一个值(t :selectOneRadio-我正在使用“战斧”)。这是一个必需的值。

如果用户未选择值,则不会进入下一个选项卡,但不会显示验证错误。嗯

如果用户选择了一个值,则转到下一个选项卡,返回到第一个选项卡并选择一个不同的值,这将表现为这次没有选择任何值。 (也没有验证错误,但是无法调用第二个选项卡)。

更糟糕的是:用户在第一个选项卡中选择一个值,转到第二个选项卡,然后尝试从那里调用操作。就像在第一个选项卡中未选择任何值一样。

有什么解释吗?

更新

PrimeFaces论坛中的解决方案suggested对我有用。 (将process =“@ this”添加到commandButton。)

最佳答案

您可能要考虑的另一件事..

如果在选项卡之间的必填字段中遇到问题,则可以通过在向导组件中实现流事件来手动执行自己的验证,以在步骤之间进行验证。

    public String onFlowProcess(FlowEvent event) {
    //First perform check to see if the user is attempting to remove the last visitor
    if ("confirm".equals(event.getNewStep()) && (visitors == null || visitors.isEmpty())) {
        log.debug("Validation failed for empty visitors");
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Visit must have at least one visitor.", null);
        FacesContext.getCurrentInstance().addMessage(null, msg);
        return event.getOldStep();
    }

    return event.getNewStep();
}

还有.xhtml文件,我声明了flowListener事件。尝试此操作,查看验证消息是否消失。
<p:wizard showNavBar="true" widgetVar="scheduler" flowListener="#{scheduleVisit.onFlowProcess}" showStepStatus="true">

关于validation - PrimeFaces的p :wizard validation not working,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6177427/

10-12 22:36