过程 - 选择后验证
幸运的是,实现选择后验证的过程比实现预先验证简单得多。实际上,只有一个点可实现选择后验证,即在验证器中。另请注意,选择后验证仅适用于操作。对于属性或其他 UI 组件,不存在选择后验证的概念。
创建验证器
为选择后验证创建验证器与为预先验证创建验证器的方式完全相同。有关详细信息,请参阅过程 - 预先验证
实现选择后验证方法
可以在验证器中实现两种选择后验证方法 - 一种用于单一选择操作,另一种用于多选操作。两种方法的相应名称为 validateSelectedAction()validateSelectedMultiSelectAction()。如果为始终不会成为多选操作的操作添加验证,则仅需实现 validateSelectedAction() 方法。如果您的操作可能是多选操作,则应同时实现 validateSelectedAction() 方法和 validateSelectedMultiSelectAction() 方法。
这两种方法之间唯一的实质区别是方法签名。validateSelectedMultiSelectAction() 返回 UIValidationResultSet,而 validateSelectedAction() 返回单个结果。
public class MyValidator extends DefaultUIComponentValidator{
@Override
public UIValidationResultSet performFullPreValidation()
(UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale
locale) throws WTException {
UIValidationResultSet resultSet =
UIValidationResult.newInstance);
// perform your business logic here
// if you want to enable the action/component, do this:
// resultSet.addResult(UIValidationResult.newInstance(validationKey
UIValidationStatus.ENABLED));
// if you want to disable the action/component, do this:
// resultSet.addResult(UIValidationResult.newInstance(validationKey,
UIValidationStatus.DISABLED));
// if you want to hide the action/component, do this:
// resultSet.addResult(UIValidationResult.newInstance(validationKey
UIValidationStatus.HIDDEN));
return resultSet;
}
@Override
public UIValidationResultSet validateSelectedMultiSelectAction
() (UIValidationKey validationKey,
UIValidationCriteria validationCriteria, Locale
locale) throws WTException {
UIValidationResultSet resultSet =
UIValidationResultSet.newInstance();
// perform your business logic here
// if you want to execute the action, do this:
//
resultSet.addResult(UIValidationResult.newInstance(validationKey,
//
UIValidationStatus.PERMITTED));
// // if you want to abort the action, do this:
//
resultSet.addResult(UIValidationResult.newInstance(validationKey,
// UIValidationStatus.DENIED));
// if you want to prompt the user for confirmation, do this:
//
resultSet.addResult(UIValidationResult.newInstance(validationKey,
//
UIValidationStatus. PROMPT_FOR_CONFIRMATION));
return resultSet;
}
}
UIValidationStatus.PROMPT_FOR_CONFIRMATION 的处理方法
如果您的验证器返回 PROMPT_FOR_CONFIRMATION 状况,则需要通过使用 PTC.validation.AJAXPostSelectValidation JavaScript 函数以特殊方式配置。
<action name="myAction" >
<command class="com.ptc.xxx" method="function" onClick="
PTC.validation.AJAXPostSelectValidation(event, validationKey)"/>
</action>
在此情况下,进行一项或几项选择并单击 myAction 后:
基于所提供的 validationKeyPTC.validation.AJAXPostSelectValidation 函数将在映射的验证器上执行选择后函数。
如果状态为 PROMPT_FOR_CONFIRMATION,将显示确认弹出框,并根据您的选择进行进一步处理。
如果您选择“是”进行确认或状况为 PERMITTED,则另一个请求将发送至服务器以执行此操作。提供一项内置智能功能,不会再次为此请求调用验证器。
这对您有帮助吗?