Windchill中afterVK的写法示例
目录
一、需求说明
二、步骤及代码示例
2.1 配置内容
a. xconf中
b. action中
2.2 校验代码实现逻辑示例
一、需求说明
标准的windchill开发中,在页面wizard步骤点击下一步时,时常需要进行一些信息内容的校验,这样的校验,windchill产品提供了标准的afterVK做法,下面是一个简单的afterVK示例。
二、步骤及代码示例
2.1 配置内容
a. xconf中
<Service context="default" name="com.ptc.core.ui.validation.UIComponentValidator" targetFile="codebase/service.properties"><Option requestor="null"serviceClass="ext.test.partbom.dao.validators.SpecificationModelValidator"selector="validatorSpecificationModel" /></Service>
b. action中
<action name="searchSupplierManufacturerStep" required="false" preloadWizardPage="false" afterVK="validatorSpecificationModel"><command windowType="wizard_step" url="netmarkets/jsp/ext/test/partbom/searchSupplierManufacturerStep.jsp" /></action>
2.2 校验代码实现逻辑示例
package ext.test.partbom.dao.validators;import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;import org.apache.commons.lang.StringUtils;import wt.util.WTException;import com.ptc.core.ui.resources.FeedbackType;
import com.ptc.core.ui.validation.DefaultUIComponentValidator;
import com.ptc.core.ui.validation.UIValidationCriteria;
import com.ptc.core.ui.validation.UIValidationFeedbackMsg;
import com.ptc.core.ui.validation.UIValidationKey;
import com.ptc.core.ui.validation.UIValidationResult;
import com.ptc.core.ui.validation.UIValidationStatus;import ext.test.generic.constants.AttributeConstants;
import ext.test.partbom.bean.ManufacturerSupplierBean;public class SpecificationModelValidator extends DefaultUIComponentValidator {@Overridepublic UIValidationResult validateFormSubmission(UIValidationKey uivalidationkey,UIValidationCriteria uivalidationcriteria, Locale locale) throws WTException {UIValidationResult uivalidationresult = UIValidationResult.newInstance(uivalidationkey,UIValidationStatus.PERMITTED);Map<String,String> attrMap = uivalidationcriteria.getText();List<ManufacturerSupplierBean> beans = manufacturerSupplierInfo(attrMap);for (int i = 0; i < beans.size(); i++) {ManufacturerSupplierBean bean = beans.get(i);if(StringUtils.isEmpty(bean.getHQ_SPECIFICATIONMODEL().trim())){uivalidationresult.addFeedbackMsg(UIValidationFeedbackMsg.newInstance("记录列表中有规格型号为空,请填写!",FeedbackType.ERROR));uivalidationresult.setStatus(UIValidationStatus.DENIED);return uivalidationresult;}}uivalidationresult = super.validateFormSubmission(uivalidationkey, uivalidationcriteria, locale);return uivalidationresult;}@SuppressWarnings("rawtypes")private static List<ManufacturerSupplierBean> manufacturerSupplierInfo(Map<String,String> map) {List<ManufacturerSupplierBean> list = new ArrayList<ManufacturerSupplierBean>();//String customPartNumber = (String) map.get(AttributeConstants.ATTR_HQ_CUSTOMER_ITEM_NO);Set set = map.keySet();for (Object key : set) {String keyStr = (String) key;String rowId = "";if (keyStr.contains(AttributeConstants.ATTR_HQ_MANUFACTURER + "_")) {rowId = keyStr.substring(keyStr.indexOf(AttributeConstants.ATTR_HQ_MANUFACTURER + "_")+ (AttributeConstants.ATTR_HQ_MANUFACTURER + "_").length());String manufacturer = (String) map.get(AttributeConstants.ATTR_HQ_MANUFACTURER + "_"+ rowId);String supplier = (String) map.get(AttributeConstants.ATTR_HQ_SUPPLIER + "_" + rowId);String specificationModel = (String) map.get(AttributeConstants.ATTR_HQ_SPECIFICATIONMODEL+ "_" + rowId);ManufacturerSupplierBean bean = new ManufacturerSupplierBean();bean.setHQ_MANUFACTURER(manufacturer);bean.setHQ_SUPPLIER(supplier);bean.setHQ_SPECIFICATIONMODEL(specificationModel);list.add(bean);}}return list;}
}