For operations, use the xValidate(Context) method. For processors, use the xValidate(transitionContext, transitionName) method. It is required to define the class name that is implementing the cross validation in the processor definition.
The result of the cross-validation method is an array of Strings (messages), which are stored in the operation context under the key of 'dse_ErrorMessages'. This context will be used later during the dynamic creation of the HTML.
<operation id=transferFunds context= transferFundsCtx xValidation=com.ibm.btt.samples.html.transferFundsXVal>
<processor id=financialInfo context=financialInfoCtx xValidation=com.ibm.btt.poc.util.FinancialInfoXVal>
<?xml version="1.0"?> <dsetype.xml> <!-- DSETYPE.XML--> <!-- If property descriptors do not have "refType"s, they will point --> <!-- to the type with thesame first name as themselves. --> <!-- Exception is Property descriptors with id=typeDefault. They do --> <!-- not need "refType" because they will point to the enclosing type. --> <type id="String" implClass="com.ibm.btt.base.DataField"> <StringDescriptor id="typeDefault"> <stringConverter convTypes="default,host" implClass="com.ibm.btt.base.types.ext.StringConverter"/> </StringDescriptor> </type> <type id="Date" implClass="com.ibm.btt.base.DataField"> <DateDescriptor id="typeDefault" refType="Date"> <dateConverter convTypes="default" implClass="com.ibm.btt.base.types.ext.DateConverter" pattern="ddMmmyyy"/> <dateConverter convTypes="xml" implClass="com.ibm.btt.base.types.ext.DateConverter" pattern="ddmmyy"/> <dateValidator implClass="com.ibm.btt.base.types.ext.DateValidator" mask="ddMmmyyyy"/> </DateDescriptor> </type> <type id="AccountList" implClass="com.ibm.btt.base.IndexedCollection"> <ICollDescriptor id="typeDefault" refType="AccountList" size="0"/> <IntegerDescriptor id="account number" refType="String"/> </type> <type id="Customer" implClass="com.ibm.btt.base.KeyedCollection" keyBuilder="mySolemTest.FundsTransferKeyBuilder"> <KCollDescriptor id="typeDefault" refType="Customer"/> <StringDescriptor id="customer name" refType="String" initialValue="Ralph"/> <KCollDescriptor id="accounts" refType="AccountList" size="3" description="list of accounts"/> </type> <type id="FundsTransfer" implClass="com.ibm.btt.base.KeyedCollection"> <KCollDescriptor id="typeDefault" refType="FundsTransfer"/> <StringDescriptor id="accountFrom" refType="String" initialValue="2345"/> <StringDescriptor id="accountTo" refType="String" initialValue="678589"/> <DateDescriptor id="transactionDate" refType="Date"> <dateConverter convTypes="xml" implClass="com.ibm.btt.base.types.ext.DateConverter" pattern="Mmmyy"/> </DateDescriptor> </type> <type id="Float" implClass=com.ibm.btt.base.DataField"> <FloatDescriptor id="typeDefault"> <floatConverter convTypes="default" implClass="com.ibm.btt.base.types.ext.FloatConverter"/> <floatValidator implClass="com.ibm.btt.base.types.ext.FloatValidator"/> </FloatDescriptor> </type> <type id="AccountTransferData" implClass="com.ibm.btt.base.KeyedCollection"> <KCollDescriptor id="typeDefault" refType="accountTransferData"/> <StringDescriptor id="acctFrom" refType="String"/> <StringDescriptor id="acctTo" refType="String"/> <FloatDescriptor id="amount" refType="Float"/> <StringDescriptor id="acctFromBalance" refType="String"/> <StringDescriptor id="acctToBalance" refType="String"/> </type> </dsetype.xml>
<!----------------------------------------------------------------------------> <! Account Transfer Operation Context... > <!----------------------------------------------------------------------------> <context id="AccountTransferCtx" type="oper" parent="htmlPageCtx"> <refType refId="AccountTransferData"> </refType> <refService refId="theJournal" alias="Journal" type="cs"/> <refService refId="theHost" alias="host" type="cs"/> </context>