これは、ウィザード内で [次へ] ボタンを押した後に検証が失敗するかどうかを確認する試みです。これは oncomplete で行われます - 現時点では、未定義の値を示す JS 警告メッセージを表示しています。required=true を介して検証がトリガーされるため、バックエンド Bean はここでは関係ないと思います - Bean でそれ以上のチェックは行われません。
現在の動作: アラート ボックスに「未定義」と表示され、その後、検証エラー メッセージに「パスワードを空白にすることはできません」と表示される
予想される動作: アラート ボックスに "true" が表示された後、検証エラー メッセージに "パスワードを空白にすることはできません" が表示される
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
</h:head>
<h:body>
<h:form prependId="false">
<p:dialog id="modalDialog" header="add user" widgetVar="userDialog" modal="true" width="640"
height="400" closable="true" appendToBody="true" visible="true">
<p:growl id="growl" sticky="true" showDetail="true"/>
<p:wizard widgetVar="wiz" effect="fade"
flowListener="#{userWizard.onFlowProcess}" showStepStatus="true" showNavBar="false" onback="progressBack();" >
<p:tab id="personal" title="Personal" >
<p:messages severity="warn" showDetail="true" autoUpdate="true" redisplay="true" />
<p:messages id="dialog_msgs" showDetail="false" autoUpdate="true" redisplay="true"/>
<p:panel style="height:150px;" >
<h:panelGrid columnClasses="label" columns="6" cellpadding="5">
<p:column>
<h:outputText value="Password: " styleClass="label" />
</p:column>
<p:column>
<p:password value="${userWizard.user.password}" styleClass="content" required="true"
requiredMessage="Password cannot be blank"/>
</p:column>
<p:column style="width: 50;">
<h:outputText value=" "/>
</p:column>
</h:panelGrid>
<h:panelGroup>
</h:panelGroup>
</p:panel>
<p:commandButton value="Previous" disabled="true" readonly="true" />
<p:commandButton value="Next" oncomplete="alert(args.validationFailed); wiz.next();" update="dialog_msgs" ajax="true" process="@this" />
</p:tab>
<p:tab id="personal2" title="Personal">
Not relevant
<p:commandButton value="Submit" update="growl messages @form"
actionListener="#{userWizard.save}"/>
</p:tab>
</p:wizard>
</p:dialog>
</h:form>
</h:body>
</html>