过程 - 提交后验证
实现提交后验证的步骤比预先验证要简单得多,与选择后验证类似。实际上,只有一个点可实现提交后验证,即在验证器中。另请注意,提交后验证仅适用于向导步骤和向导提交。
创建验证器
为提交后验证创建验证器与为预先验证创建验证器的方式完全相同。有关详细信息,请参阅过程 - 预先验证
实现提交后验证方法
在验证器中仅能实现一种提交后验证方法 - 该方法的相应名称为 validateFormSubmission()。此方法旨在调用向导“下一步”或“完成”操作后调用,以确定用户输入的数据是否有效。
public class MyValidator extends DefaultUIComponentValidator{
@Override
public UIValidationResult validateFormSubmission
(UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale
locale) throws WTException {
UIValidationResult result =
UIValidationResult.newInstance(validationKey,
UIValidationStatus.NOT_VALIDATED);
// perform your business logic here
// if you want to execute the action, do this:
// result = UIValidationResult.newInstance(validationKey,
UIValidationStatus.PERMITTED);
// if you want to abort the action, do this:
// result = UIValidationResult.newInstance(validationKey,
UIValidationStatus.DENIED);
// if you want to prompt the user for confirmation, do this:
// result = UIValidationResult.newInstance(validationKey,
//
UIValidationStatus.PROMPT_FOR_CONFIRMATION);
return result;
}
}
UIValidationStatus.PROMPT_FOR_CONFIRMATION 的处理方法
如果您的验证器返回 PROMPT_FOR_CONFIRMATION 状况,则需要对其进行特殊配置。
选项 1:通过使用 PTC.validation.AJAXValidateFormSubmission JavaScript 函数,使用您自己的自定义“确定/应用”向导按钮。
<action name="myOkButton" id="PJL_wizard_ok" >
<command class="" method="" windowType="page" url=" javascript:PTC.
validation.AJAXValidateFormAndSubmit(validationKey)"/>
</action>
在此情况下,单击 myOkButton 后:
基于所提供的 validationKeyPTC.validation.AJAXValidateFormAndSubmit 函数将在映射的验证器上执行提交后函数。
如果状态为 PROMPT_FOR_CONFIRMATION,将显示确认弹出框,并根据您的选择进行进一步处理。
如果您选择“是”进行确认或状况为 PERMITTED,则将提交表单。提供一项内置智能功能,不会再次为此请求调用验证器。
选项 2:通过使用 PTC.validation.AJAXValidateFormSubmission JavaScript 函数在 jsp 中添加您自己的用户提交函数 (在提交表单时调用)。
<script type="text/javascript">
setUserSubmitFunction (function () {return PTC.validation.
AJAXValidateFormSubmission(validationKey);});
</script>
在此情况下,您的“确认/完成”向导按钮可用后:
基于所提供的 validationKey 的 PTC.validation.AJAXValidateFormSubmission 函数将在映射的验证器上执行提交后函数。
如果状态为 PROMPT_FOR_CONFIRMATION,,将显示确认弹出框,并根据您的选择进行进一步处理。
如果您选择“是”进行确认或状况为 PERMITTED,则“确认/完成”向导按钮会提交表单。提供一项内置智能功能,不会再次为此请求调用验证器。
这对您有帮助吗?