SmartClient Version: SNAPSHOT_v11.1d_2017-02-20/Enterprise Development Only (built 2017-02-20)
Hello, it seems that something has changed.
#48: seems fixed
#47: there's still the wrong server validation error on unitCost, but this time it's coupled with a correct error on 'description', which was lacking, before.
Announcement
Collapse
No announcement yet.
X
-
hello, bumping this thread just to know if you succeeded in replicating the bug.
Leave a comment:
-
SmartClient Version: SNAPSHOT_v11.1d_2017-02-09/Enterprise Development Only (built 2017-02-09)
Chrome on OSX Sierra
(Test case equal to that of post #36)
Please modify the #fetchOperationFS sample like this:
Code:isc.ListGrid.create({ ID:"dsListGrid", width: "100%", height: "100%", minFieldWidth:80, autoFetchData: true, canEdit:true, dataSource: "supplyItem" });
Code:<DataSource ID="supplyItem" serverType="sql" tableName="supplyItem" titleField="itemName" testFileName="/examples/shared/ds/test_data/supplyItem.data.xml" dbImportFileName="/examples/shared/ds/test_data/supplyItemLarge.data.xml" > <fields> <field name="itemID" type="sequence" hidden="true" primaryKey="true"/> <field name="itemName" type="text" title="Item" length="128" required="true"/> <field name="SKU" type="text" title="SKU" length="10" required="true"/> <field name="description" type="text" title="Description" length="2000"> </field> <field name="category" type="text" title="Category" length="128" required="true" foreignKey="supplyCategory.categoryName"/> <field name="units" type="enum" title="Units" length="5"> <valueMap> <value>Roll</value> <value>Ea</value> <value>Pkt</value> <value>Set</value> <value>Tube</value> <value>Pad</value> <value>Ream</value> <value>Tin</value> <value>Bag</value> <value>Ctn</value> <value>Box</value> </valueMap> </field> <field name="unitCost" type="float" title="Unit Cost"> <validators> <validator type="required" dependentFields="SKU"> <applyWhen operator="and"> <criteria> <criterion fieldName="SKU" operator="equals" value="45300"/> </criteria> </applyWhen> </validator> </validators> </field> <field name="inStock" type="boolean" title="In Stock"/> <field name="nextShipment" type="date" title="Next Shipment"/> </fields> </DataSource>
You'll get a (client-side) validation error - correct.
Than change the SKU to, say 45301. You'll get a (wrong) server side validation error:
Code:=== 2017-02-09 11:54:46,805 [ec-2] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36': Safari with Accept-Encoding header === 2017-02-09 11:54:46,807 [ec-2] DEBUG XML - Parsed XML from (in memory stream): 2ms === 2017-02-09 11:54:46,808 [ec-2] DEBUG RPCManager - Processing 1 requests. === 2017-02-09 11:54:46,808 [ec-2] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ itemID:1 }, values:{ itemID:1, unitCost:null, SKU:"45301" }, operationConfig:{ dataSource:"supplyItem", repo:null, operationType:"update", textMatchStyle:"exact" }, componentId:"dsListGrid", appID:"builtinApplication", operation:"supplyItem_update", oldValues:{ category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:0.41, SKU:"45300", inStock:true, units:"Roll" } } === 2017-02-09 11:54:46,809 [ec-2] INFO IDACall - Performing 1 operation(s) === 2017-02-09 11:54:46,809 [ec-2] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2017-02-09 11:54:46,809 [ec-2] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing... === 2017-02-09 11:54:46,809 [ec-2] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application === 2017-02-09 11:54:46,809 [ec-2] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation === 2017-02-09 11:54:46,809 [ec-2] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/unitCost': {errorMessage=Field is required} === 2017-02-09 11:54:46,809 [ec-2] INFO Validation - [builtinApplication.supplyItem_update] Validation error: [ { unitCost:{ errorMessage:"Field is required" } } ] === 2017-02-09 11:54:46,810 [ec-2] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2017-02-09 11:54:46,810 [ec-2] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2017-02-09 11:54:46,810 [ec-2] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 572 === 2017-02-09 11:54:46,810 [ec-2] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 572 === 2017-02-09 11:54:46,810 [ec-2] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 572 === 2017-02-09 11:54:46,810 [ec-2] INFO Compression - /isomorphic/IDACall: 216 -> 181 bytes
Leave a comment:
-
SmartClient Version: SNAPSHOT_v11.1d_2017-02-09/Enterprise Development Only (built 2017-02-09)
Chrome on OSX Sierra
(Test case equal to that of post #34)
Please modify the #fetchOperationFS sample like this:
Code:isc.ListGrid.create({ ID:"dsListGrid", width: "100%", height: "100%", minFieldWidth:80, autoFetchData: true, canEdit:true, dataSource: "supplyItem" });
Code:<DataSource ID="supplyItem" serverType="sql" tableName="supplyItem" titleField="itemName" testFileName="/examples/shared/ds/test_data/supplyItem.data.xml" dbImportFileName="/examples/shared/ds/test_data/supplyItemLarge.data.xml" > <fields> <field name="itemID" type="sequence" hidden="true" primaryKey="true"/> <field name="itemName" type="text" title="Item" length="128" required="true"/> <field name="SKU" type="text" title="SKU" length="10" required="true"/> <field name="description" type="text" title="Description" length="2000"> <validators> <validator type="required" dependentFields="category"> <applyWhen operator="and"> <criteria> <criterion fieldName="category" operator="equals" value="Adding Machine/calculator Roll"/> </criteria> </applyWhen> </validator> </validators> </field> <field name="category" type="text" title="Category" length="128" required="true" foreignKey="supplyCategory.categoryName"/> <field name="units" type="enum" title="Units" length="5"> <valueMap> <value>Roll</value> <value>Ea</value> <value>Pkt</value> <value>Set</value> <value>Tube</value> <value>Pad</value> <value>Ream</value> <value>Tin</value> <value>Bag</value> <value>Ctn</value> <value>Box</value> </valueMap> </field> <field name="unitCost" type="float" title="Unit Cost"> <validators> <validator type="required" dependentFields="category"> <applyWhen operator="and"> <criteria> <criterion fieldName="category" operator="notEqual" value="Adding Machine/calculator Roll"/> </criteria> </applyWhen> </validator> </validators> </field> <field name="inStock" type="boolean" title="In Stock"/> <field name="nextShipment" type="date" title="Next Shipment"/> </fields> </DataSource>
You'll get a server validation error on unitCost, but its validator must be inactive.
server logs:
Code:=== 2017-02-09 11:50:38,650 [ec-4] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36': Safari with Accept-Encoding header === 2017-02-09 11:50:38,652 [ec-4] DEBUG XML - Parsed XML from (in memory stream): 1ms === 2017-02-09 11:50:38,653 [ec-4] DEBUG RPCManager - Processing 1 requests. === 2017-02-09 11:50:38,653 [ec-4] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ itemID:1 }, values:{ itemID:1, unitCost:null }, operationConfig:{ dataSource:"supplyItem", repo:null, operationType:"update", textMatchStyle:"exact" }, componentId:"dsListGrid", appID:"builtinApplication", operation:"supplyItem_update", oldValues:{ category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:0.41, SKU:"45300", inStock:true, units:"Roll" } } === 2017-02-09 11:50:38,653 [ec-4] INFO IDACall - Performing 1 operation(s) === 2017-02-09 11:50:38,653 [ec-4] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2017-02-09 11:50:38,653 [ec-4] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing... === 2017-02-09 11:50:38,654 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application === 2017-02-09 11:50:38,654 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation === 2017-02-09 11:50:38,654 [ec-4] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/unitCost': {errorMessage=Field is required} === 2017-02-09 11:50:38,654 [ec-4] INFO Validation - [builtinApplication.supplyItem_update] Validation error: [ { unitCost:{ errorMessage:"Field is required" } } ] === 2017-02-09 11:50:38,654 [ec-4] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2017-02-09 11:50:38,654 [ec-4] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2017-02-09 11:50:38,655 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 572 === 2017-02-09 11:50:38,655 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 572 === 2017-02-09 11:50:38,655 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 572 === 2017-02-09 11:50:38,655 [ec-4] INFO Compression - /isomorphic/IDACall: 216 -> 181 bytes
Leave a comment:
-
SmartClient Version: SNAPSHOT_v11.1d_2017-02-09/Enterprise Development Only (built 2017-02-09)
Hello, the test case of posts #37 and #42 is fixed.
There are still wrong validation errors for the test cases of posts #36 and #34.
I'll rewrite them in another post.
Leave a comment:
-
Both of these problems have the same cause, which is very similar to the other issues you reported; our earlier fix only partially solved the problem. So, sorry about that, and please try again with tomorrow's 11.1 / 6.1 build
Leave a comment:
-
also for the test case of post #34, I'm still getting the same server validation error.
edit the first row, which has category:"Adding Machine/calculator Roll", add a description and delete the unitCost value.
You'll get a validation error on unitCost, but its validator must be inactive
Code:=== 2017-02-03 16:43:08,623 [ec-4] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36': Safari with Accept-Encoding header === 2017-02-03 16:43:08,625 [ec-4] DEBUG XML - Parsed XML from (in memory stream): 1ms === 2017-02-03 16:43:08,626 [ec-4] DEBUG RPCManager - Processing 1 requests. === 2017-02-03 16:43:08,626 [ec-4] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ itemID:1 }, values:{ itemID:1, unitCost:null, description:"foo" }, operationConfig:{ dataSource:"supplyItem", repo:null, operationType:"update", textMatchStyle:"exact" }, componentId:"dsListGrid", appID:"builtinApplication", operation:"supplyItem_update", oldValues:{ category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:2, SKU:"45300", inStock:true, units:"Roll" } } === 2017-02-03 16:43:08,626 [ec-4] INFO IDACall - Performing 1 operation(s) === 2017-02-03 16:43:08,626 [ec-4] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2017-02-03 16:43:08,626 [ec-4] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing... === 2017-02-03 16:43:08,627 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application === 2017-02-03 16:43:08,627 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation === 2017-02-03 16:43:08,627 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"category", operator:"notEqual", value:"Adding Machine/calculator Roll" } ] } record is: { itemID:1, unitCost:null, description:"foo" } === 2017-02-03 16:43:08,627 [ec-4] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Processing security checks for DataSource null, field null === 2017-02-03 16:43:08,627 [ec-4] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Request is not a client request, ignoring security checks. === 2017-02-03 16:43:08,627 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application === 2017-02-03 16:43:08,627 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation === 2017-02-03 16:43:08,627 [ec-4] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] Performing fetch operation with criteria: {itemID:1} values: {itemID:1} === 2017-02-03 16:43:08,628 [ec-4] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause === 2017-02-03 16:43:08,628 [ec-4] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] 1128: Executing SQL query on 'HSQLDB': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-02-03 16:43:08,628 [ec-4] DEBUG SQLConnectionManager - [builtinApplication.supplyItem_update, builtinApplication.null] Borrowed connection '705003081' === 2017-02-03 16:43:08,628 [ec-4] INFO SQLDriver - [builtinApplication.supplyItem_update, builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '705003081': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-02-03 16:43:08,629 [ec-4] INFO DSResponse - [builtinApplication.supplyItem_update] DSResponse: List with 1 items === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { itemID:1, unitCost:null, description:"foo" } === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Merged conditionRecord is: { itemName:"Adding Machine Roll 57x57mm Standard", category:"Adding Machine/calculator Roll", itemID:1, unitCost:null, description:"foo", SKU:"45300", inStock:true, units:"Roll" } === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"notEqual", value:"Adding Machine/calculator Roll", fieldName:"category" }: And === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnstrue === 2017-02-03 16:43:08,630 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-02-03 16:43:08,630 [ec-4] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' conditional validator of type 'required' is: inactive === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'description' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"category", operator:"equals", value:"Adding Machine/calculator Roll" } ] } record is: { itemID:1, unitCost:null, description:"foo" } === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { itemID:1, unitCost:null, description:"foo" } === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Merged conditionRecord is: { itemName:"Adding Machine Roll 57x57mm Standard", category:"Adding Machine/calculator Roll", itemID:1, unitCost:null, description:"foo", SKU:"45300", inStock:true, units:"Roll" } === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"Adding Machine/calculator Roll", fieldName:"category" }: And === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnstrue === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-02-03 16:43:08,631 [ec-4] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'description' conditional validator of type 'required' is: active === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"Adding Machine/calculator Roll", fieldName:"category" }: And === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (null): isEqualToConfiguredValue === 2017-02-03 16:43:08,631 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"notEqual", value:"Adding Machine/calculator Roll", fieldName:"category" }: And === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (null): isEqualToConfiguredValue === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "Adding Machine/calculator Roll": isEqualToConfiguredValue === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-02-03 16:43:08,632 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-02-03 16:43:08,632 [ec-4] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/unitCost': {errorMessage=Field is required} === 2017-02-03 16:43:08,632 [ec-4] INFO Validation - [builtinApplication.supplyItem_update] Validation error: [ { unitCost:{ errorMessage:"Field is required" } } ] === 2017-02-03 16:43:08,632 [ec-4] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2017-02-03 16:43:08,632 [ec-4] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1123 === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1123 === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1123 === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1128 === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDriver - Freeing SQLDriver dbConnection 705003081 for SQLDriver instance 1985704322 === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLConnectionManager - About to close connection with hashcode "705003081" === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1128 === 2017-02-03 16:43:08,633 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1128 === 2017-02-03 16:43:08,633 [ec-4] INFO Compression - /isomorphic/IDACall: 216 -> 181 bytes
Leave a comment:
-
SmartClient Version: SNAPSHOT_v11.1d_2017-02-01/Enterprise Development Only (built 2017-02-01)
Sorry, I must have overlooked something. Please ignore post #40.
Please repeat the test case of post #37, like so: edit SKU to 45301, and delete the units value.
For SKU = 45301, units IS NOT required, and unitCost is required.
So, I expect no validation error.
Instead I get a server validation error for the unitCost field, which is not null.
Code:=== 2017-02-03 16:23:18,321 [ec-8] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36': Safari with Accept-Encoding header === 2017-02-03 16:23:18,325 [ec-8] DEBUG XML - Parsed XML from (in memory stream): 2ms === 2017-02-03 16:23:18,326 [ec-8] DEBUG RPCManager - Processing 1 requests. === 2017-02-03 16:23:18,326 [ec-8] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ itemID:1 }, values:{ itemID:1, SKU:"45301", units:null }, operationConfig:{ dataSource:"supplyItem", repo:null, operationType:"update", textMatchStyle:"exact" }, componentId:"dsListGrid", appID:"builtinApplication", operation:"supplyItem_update", oldValues:{ category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:2, SKU:"45300", inStock:true, units:"Roll" } } === 2017-02-03 16:23:18,326 [ec-8] INFO IDACall - Performing 1 operation(s) === 2017-02-03 16:23:18,326 [ec-8] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2017-02-03 16:23:18,326 [ec-8] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing... === 2017-02-03 16:23:18,327 [ec-8] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application === 2017-02-03 16:23:18,327 [ec-8] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation === 2017-02-03 16:23:18,327 [ec-8] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"SKU", operator:"notEqual", value:"45300" } ] } record is: { itemID:1, unitCost:null, SKU:"45301", units:null } === 2017-02-03 16:23:18,327 [ec-8] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Processing security checks for DataSource null, field null === 2017-02-03 16:23:18,327 [ec-8] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Request is not a client request, ignoring security checks. === 2017-02-03 16:23:18,327 [ec-8] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application === 2017-02-03 16:23:18,327 [ec-8] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation === 2017-02-03 16:23:18,327 [ec-8] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] Performing fetch operation with criteria: {itemID:1} values: {itemID:1} === 2017-02-03 16:23:18,328 [ec-8] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause === 2017-02-03 16:23:18,328 [ec-8] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] 1019: Executing SQL query on 'HSQLDB': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-02-03 16:23:18,328 [ec-8] DEBUG SQLConnectionManager - [builtinApplication.supplyItem_update, builtinApplication.null] Borrowed connection '705003081' === 2017-02-03 16:23:18,328 [ec-8] INFO SQLDriver - [builtinApplication.supplyItem_update, builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '705003081': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-02-03 16:23:18,329 [ec-8] INFO DSResponse - [builtinApplication.supplyItem_update] DSResponse: List with 1 items === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { itemID:1, unitCost:null, SKU:"45301", units:null } === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Merged conditionRecord is: { itemName:"Adding Machine Roll 57x57mm Standard", category:"Adding Machine/calculator Roll", itemID:1, unitCost:null, SKU:"45301", inStock:true, units:null } === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"notEqual", value:"45300", fieldName:"SKU" }: And === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-02-03 16:23:18,330 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-02-03 16:23:18,330 [ec-8] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' conditional validator of type 'required' is: active === 2017-02-03 16:23:18,330 [ec-8] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/unitCost/unitCost': {errorMessage=Field is required} === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'units' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"SKU", operator:"equals", value:"45300" } ] } record is: { itemID:1, unitCost:null, SKU:"45301", units:null } === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { itemID:1, unitCost:null, SKU:"45301", units:null } === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Merged conditionRecord is: { itemName:"Adding Machine Roll 57x57mm Standard", category:"Adding Machine/calculator Roll", itemID:1, unitCost:null, SKU:"45301", inStock:true, units:null } === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"45300", fieldName:"SKU" }: And === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-02-03 16:23:18,331 [ec-8] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'units' conditional validator of type 'required' is: inactive === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"45300", fieldName:"SKU" }: And === 2017-02-03 16:23:18,331 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"notEqual", value:"45300", fieldName:"SKU" }: And === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-02-03 16:23:18,332 [ec-8] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-02-03 16:23:18,332 [ec-8] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/unitCost': {errorMessage=Field is required} === 2017-02-03 16:23:18,332 [ec-8] INFO Validation - [builtinApplication.supplyItem_update] Validation error: [ { unitCost:[ { errorMessage:"Field is required" }, { errorMessage:"Field is required" } ] } ] === 2017-02-03 16:23:18,332 [ec-8] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2017-02-03 16:23:18,332 [ec-8] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1024 === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1024 === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1024 === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1019 === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDriver - Freeing SQLDriver dbConnection 705003081 for SQLDriver instance 983977414 === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLConnectionManager - About to close connection with hashcode "705003081" === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1019 === 2017-02-03 16:23:18,333 [ec-8] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 1019 === 2017-02-03 16:23:18,333 [ec-8] INFO Compression - /isomorphic/IDACall: 253 -> 186 bytes
Last edited by claudiobosticco; 3 Feb 2017, 08:38.
Leave a comment:
-
What are you saying is wrong here: that there should be no error, or that there should be an error but it should come from the server?
Leave a comment:
-
EDIT: bogus report, please ignore
SmartClient Version: SNAPSHOT_v11.1d_2017-02-01/Enterprise Development Only (built 2017-02-01)
Hello, the behavior has changed, maybe better but not yet correct.
For the test case of post #37, there's a client validation error instead of a server validation error.
Test case of post #34: same problem, client validation error instead of server validation error.Last edited by claudiobosticco; 3 Feb 2017, 08:48.
Leave a comment:
-
We have been able to reproduce and fix this now - thanks for the repro case. Please try with tomorrow's build
Leave a comment:
-
These look like they have the same underlying cause as the problem you originally reported a week or two ago that we were unable to get to the bottom of. We continue to investigate...
Leave a comment:
-
maybe it's the same root problem, but consider also this test case:
Code:isc.ListGrid.create({ ID:"dsListGrid", width: "100%", height: "100%", minFieldWidth:80, autoFetchData: true, canEdit:true, dataSource: "supplyItem" });
Code:<[B]DataSource[/B] [B]ID[/B]="supplyItem" [B]serverType[/B]="sql" [B]tableName[/B]="supplyItem" [B]titleField[/B]="itemName" [B]testFileName[/B]="/examples/shared/ds/test_data/supplyItem.data.xml" [B]dbImportFileName[/B]="/examples/shared/ds/test_data/supplyItemLarge.data.xml" > <[B]fields[/B]> <[B]field[/B] [B]name[/B]="itemID" [B]type[/B]="sequence" [B]hidden[/B]="true" [B]primaryKey[/B]="true"/> <[B]field[/B] [B]name[/B]="itemName" [B]type[/B]="text" [B]title[/B]="Item" [B]length[/B]="128" [B]required[/B]="true"/> <[B]field[/B] [B]name[/B]="SKU" [B]type[/B]="text" [B]title[/B]="SKU" [B]length[/B]="10" [B]required[/B]="true"/> <[B]field[/B] [B]name[/B]="description" [B]type[/B]="text" [B]title[/B]="Description" [B]length[/B]="2000"> </[B]field[/B]> <[B]field[/B] [B]name[/B]="category" [B]type[/B]="text" [B]title[/B]="Category" [B]length[/B]="128" [B]required[/B]="true" [B]foreignKey[/B]="supplyCategory.categoryName"/> <[B]field[/B] [B]name[/B]="units" [B]type[/B]="text" [B]title[/B]="Units" [B]length[/B]="5"> <[B]validators[/B]> <[B]validator[/B] [B]type[/B]="required" [B]dependentFields[/B]="SKU"> <[B]applyWhen[/B] [B]operator[/B]="and"> <[B]criteria[/B]> <[B]criterion[/B] [B]fieldName[/B]="SKU" [B]operator[/B]="equals" [B]value[/B]="45300"/> </[B]criteria[/B]> </[B]applyWhen[/B]> </[B]validator[/B]> </[B]validators[/B]> </[B]field[/B]> <[B]field[/B] [B]name[/B]="unitCost" [B]type[/B]="float" [B]title[/B]="Unit Cost"> <[B]validators[/B]> <[B]validator[/B] [B]type[/B]="required" [B]dependentFields[/B]="SKU"> <[B]applyWhen[/B] [B]operator[/B]="and"> <[B]criteria[/B]> <[B]criterion[/B] [B]fieldName[/B]="SKU" [B]operator[/B]="notEqual" [B]value[/B]="45300"/> </[B]criteria[/B]> </[B]applyWhen[/B]> </[B]validator[/B]> </[B]validators[/B]> </[B]field[/B]> <[B]field[/B] [B]name[/B]="inStock" [B]type[/B]="boolean" [B]title[/B]="In Stock"/> <[B]field[/B] [B]name[/B]="nextShipment" [B]type[/B]="date" [B]title[/B]="Next Shipment"/> </[B]fields[/B]> </[B]DataSource[/B]>
Code:=== 2017-01-27 14:48:40,908 [ec-4] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36': Safari with Accept-Encoding header === 2017-01-27 14:48:40,911 [ec-4] DEBUG XML - Parsed XML from (in memory stream): 2ms === 2017-01-27 14:48:40,913 [ec-4] DEBUG RPCManager - Processing 1 requests. === 2017-01-27 14:48:40,913 [ec-4] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ itemID:1 }, values:{ itemID:1, SKU:"45301", units:null }, operationConfig:{ dataSource:"supplyItem", repo:null, operationType:"update", textMatchStyle:"exact" }, componentId:"dsListGrid", appID:"builtinApplication", operation:"supplyItem_update", oldValues:{ category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:1, SKU:"45300", inStock:true, units:"Roll" } } === 2017-01-27 14:48:40,914 [ec-4] INFO IDACall - Performing 1 operation(s) === 2017-01-27 14:48:40,914 [ec-4] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2017-01-27 14:48:40,914 [ec-4] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing... === 2017-01-27 14:48:40,914 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application === 2017-01-27 14:48:40,914 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation === 2017-01-27 14:48:40,914 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"SKU", operator:"notEqual", value:"45300" } ] } record is: { itemID:1, unitCost:null, SKU:"45301", units:null } === 2017-01-27 14:48:40,915 [ec-4] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Processing security checks for DataSource null, field null === 2017-01-27 14:48:40,915 [ec-4] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Request is not a client request, ignoring security checks. === 2017-01-27 14:48:40,915 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application === 2017-01-27 14:48:40,915 [ec-4] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation === 2017-01-27 14:48:40,915 [ec-4] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] Performing fetch operation with criteria: {itemID:1} values: {itemID:1} === 2017-01-27 14:48:40,916 [ec-4] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause === 2017-01-27 14:48:40,916 [ec-4] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] 884: Executing SQL query on 'HSQLDB': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-01-27 14:48:40,916 [ec-4] DEBUG SQLConnectionManager - [builtinApplication.supplyItem_update, builtinApplication.null] Borrowed connection '1487763774' === 2017-01-27 14:48:40,916 [ec-4] INFO SQLDriver - [builtinApplication.supplyItem_update, builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1487763774': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-01-27 14:48:40,917 [ec-4] INFO DSResponse - [builtinApplication.supplyItem_update] DSResponse: List with 1 items === 2017-01-27 14:48:40,918 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:1.0, SKU:"45300", inStock:true, units:"Roll" } === 2017-01-27 14:48:40,918 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"notEqual", value:"45300", fieldName:"SKU" }: And === 2017-01-27 14:48:40,918 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,918 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,918 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,919 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnstrue === 2017-01-27 14:48:40,919 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-01-27 14:48:40,919 [ec-4] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' conditional validator of type 'required' is: inactive === 2017-01-27 14:48:40,919 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'units' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"SKU", operator:"equals", value:"45300" } ] } record is: { itemID:1, unitCost:1.0, SKU:"45301", units:null } === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:1.0, SKU:"45300", inStock:true, units:"Roll" } === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"45300", fieldName:"SKU" }: And === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnstrue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-01-27 14:48:40,920 [ec-4] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'units' conditional validator of type 'required' is: active === 2017-01-27 14:48:40,920 [ec-4] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/units/units': {errorMessage=Field is required} === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"45300", fieldName:"SKU" }: And === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-01-27 14:48:40,920 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-01-27 14:48:40,921 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"notEqual", value:"45300", fieldName:"SKU" }: And === 2017-01-27 14:48:40,921 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-01-27 14:48:40,921 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,921 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:48:40,921 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-01-27 14:48:40,921 [ec-4] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-01-27 14:48:40,921 [ec-4] INFO Validation - [builtinApplication.supplyItem_update] Validation error: [ { units:{ errorMessage:"Field is required" } } ] === 2017-01-27 14:48:40,921 [ec-4] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2017-01-27 14:48:40,921 [ec-4] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2017-01-27 14:48:40,921 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 879 === 2017-01-27 14:48:40,921 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 879 === 2017-01-27 14:48:40,922 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 879 === 2017-01-27 14:48:40,922 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 884 === 2017-01-27 14:48:40,922 [ec-4] DEBUG SQLDriver - Freeing SQLDriver dbConnection 1487763774 for SQLDriver instance 1282085988 === 2017-01-27 14:48:40,922 [ec-4] DEBUG SQLConnectionManager - About to close connection with hashcode "1487763774" === 2017-01-27 14:48:40,922 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 884 === 2017-01-27 14:48:40,922 [ec-4] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 884 === 2017-01-27 14:48:40,922 [ec-4] INFO Compression - /isomorphic/IDACall: 213 -> 179 bytes
Leave a comment:
-
SmartClient Version: SNAPSHOT_v11.1d_2017-01-25/Enterprise Development Only (built 2017-01-25)
Hello, I'm still having problems with conditional required validators.
Consider this test case:
Code:isc.ListGrid.create({ ID:"dsListGrid", width: "100%", height: "100%", minFieldWidth:80, autoFetchData: true, canEdit:true, dataSource: "supplyItem" });
Code:<[B]DataSource[/B] [B]ID[/B]="supplyItem" [B]serverType[/B]="sql" [B]tableName[/B]="supplyItem" [B]titleField[/B]="itemName" [B]testFileName[/B]="/examples/shared/ds/test_data/supplyItem.data.xml" [B]dbImportFileName[/B]="/examples/shared/ds/test_data/supplyItemLarge.data.xml" > <[B]fields[/B]> <[B]field[/B] [B]name[/B]="itemID" [B]type[/B]="sequence" [B]hidden[/B]="true" [B]primaryKey[/B]="true"/> <[B]field[/B] [B]name[/B]="itemName" [B]type[/B]="text" [B]title[/B]="Item" [B]length[/B]="128" [B]required[/B]="true"/> <[B]field[/B] [B]name[/B]="SKU" [B]type[/B]="text" [B]title[/B]="SKU" [B]length[/B]="10" [B]required[/B]="true"/> <[B]field[/B] [B]name[/B]="description" [B]type[/B]="text" [B]title[/B]="Description" [B]length[/B]="2000"> </[B]field[/B]> <[B]field[/B] [B]name[/B]="category" [B]type[/B]="text" [B]title[/B]="Category" [B]length[/B]="128" [B]required[/B]="true" [B]foreignKey[/B]="supplyCategory.categoryName"/> <[B]field[/B] [B]name[/B]="units" [B]type[/B]="enum" [B]title[/B]="Units" [B]length[/B]="5"> <[B]valueMap[/B]> <[B]value[/B]>Roll</[B]value[/B]> <[B]value[/B]>Ea</[B]value[/B]> <[B]value[/B]>Pkt</[B]value[/B]> <[B]value[/B]>Set</[B]value[/B]> <[B]value[/B]>Tube</[B]value[/B]> <[B]value[/B]>Pad</[B]value[/B]> <[B]value[/B]>Ream</[B]value[/B]> <[B]value[/B]>Tin</[B]value[/B]> <[B]value[/B]>Bag</[B]value[/B]> <[B]value[/B]>Ctn</[B]value[/B]> <[B]value[/B]>Box</[B]value[/B]> </[B]valueMap[/B]> </[B]field[/B]> <[B]field[/B] [B]name[/B]="unitCost" [B]type[/B]="float" [B]title[/B]="Unit Cost"> <[B]validators[/B]> <[B]validator[/B] [B]type[/B]="required" [B]dependentFields[/B]="SKU"> <[B]applyWhen[/B] [B]operator[/B]="and"> <[B]criteria[/B]> <[B]criterion[/B] [B]fieldName[/B]="SKU" [B]operator[/B]="equals" [B]value[/B]="45300"/> </[B]criteria[/B]> </[B]applyWhen[/B]> </[B]validator[/B]> </[B]validators[/B]> </[B]field[/B]> <[B]field[/B] [B]name[/B]="inStock" [B]type[/B]="boolean" [B]title[/B]="In Stock"/> <[B]field[/B] [B]name[/B]="nextShipment" [B]type[/B]="date" [B]title[/B]="Next Shipment"/> </[B]fields[/B]> </[B]DataSource[/B]>
You'll get a (client-side) validation error - correct.
Than change the SKU to, say 45301. You'll get a (wrong) server side validation error:
Code:=== 2017-01-27 14:38:30,711 [ec-7] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36': Safari with Accept-Encoding header === 2017-01-27 14:38:30,713 [ec-7] DEBUG XML - Parsed XML from (in memory stream): 1ms === 2017-01-27 14:38:30,714 [ec-7] DEBUG RPCManager - Processing 1 requests. === 2017-01-27 14:38:30,714 [ec-7] DEBUG RPCManager - Request #1 (DSRequest) payload: { criteria:{ itemID:1 }, values:{ itemID:1, unitCost:null, SKU:"45301" }, operationConfig:{ dataSource:"supplyItem", repo:null, operationType:"update", textMatchStyle:"exact" }, componentId:"dsListGrid", appID:"builtinApplication", operation:"supplyItem_update", oldValues:{ category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:1, SKU:"45300", inStock:true, units:"Roll" } } === 2017-01-27 14:38:30,714 [ec-7] INFO IDACall - Performing 1 operation(s) === 2017-01-27 14:38:30,714 [ec-7] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null === 2017-01-27 14:38:30,714 [ec-7] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing... === 2017-01-27 14:38:30,715 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application === 2017-01-27 14:38:30,715 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation === 2017-01-27 14:38:30,715 [ec-7] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' for validator type 'required', 'applyWhen' is: { operator:"and", criteria:[ { fieldName:"SKU", operator:"equals", value:"45300" } ] } record is: { itemID:1, unitCost:null, SKU:"45301" } === 2017-01-27 14:38:30,715 [ec-7] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Processing security checks for DataSource null, field null === 2017-01-27 14:38:30,715 [ec-7] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Request is not a client request, ignoring security checks. === 2017-01-27 14:38:30,715 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application === 2017-01-27 14:38:30,715 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation === 2017-01-27 14:38:30,715 [ec-7] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] Performing fetch operation with criteria: {itemID:1} values: {itemID:1} === 2017-01-27 14:38:30,716 [ec-7] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause === 2017-01-27 14:38:30,716 [ec-7] INFO SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] 831: Executing SQL query on 'HSQLDB': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-01-27 14:38:30,716 [ec-7] DEBUG SQLConnectionManager - [builtinApplication.supplyItem_update, builtinApplication.null] Borrowed connection '1487763774' === 2017-01-27 14:38:30,716 [ec-7] INFO SQLDriver - [builtinApplication.supplyItem_update, builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '1487763774': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=1) === 2017-01-27 14:38:30,717 [ec-7] INFO DSResponse - [builtinApplication.supplyItem_update] DSResponse: List with 1 items === 2017-01-27 14:38:30,717 [ec-7] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is: { category:"Adding Machine/calculator Roll", itemName:"Adding Machine Roll 57x57mm Standard", itemID:1, unitCost:1.0, SKU:"45300", inStock:true, units:"Roll" } === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"45300", fieldName:"SKU" }: And === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnstrue === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true === 2017-01-27 14:38:30,718 [ec-7] INFO DefaultValidators - [builtinApplication.supplyItem_update] on field: 'unitCost' conditional validator of type 'required' is: active === 2017-01-27 14:38:30,718 [ec-7] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/unitCost/unitCost': {errorMessage=Field is required} === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): { operatorId:"equals", value:"45300", fieldName:"SKU" }: And === 2017-01-27 14:38:30,718 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "45301": isEqualToConfiguredValue === 2017-01-27 14:38:30,719 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:38:30,719 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "45300": isEqualToConfiguredValue === 2017-01-27 14:38:30,719 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse === 2017-01-27 14:38:30,719 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false === 2017-01-27 14:38:30,719 [ec-7] INFO Validation - [builtinApplication.supplyItem_update] Validation error: [ { unitCost:{ errorMessage:"Field is required" } } ] === 2017-01-27 14:38:30,719 [ec-7] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8 === 2017-01-27 14:38:30,719 [ec-7] DEBUG RPCManager - non-DMI response, dropExtraFields: false === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 826 === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 826 === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 826 === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 831 === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDriver - Freeing SQLDriver dbConnection 1487763774 for SQLDriver instance 1074486331 === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLConnectionManager - About to close connection with hashcode "1487763774" === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 831 === 2017-01-27 14:38:30,719 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 831 === 2017-01-27 14:38:30,719 [ec-7] INFO Compression - /isomorphic/IDACall: 216 -> 181 bytes
Leave a comment:
Leave a comment: