V9: Checking string fields for null

By | January 2, 2018

It seems there is an unexpected change in how V9 (specifically, 9.0.0.3172) is treating string fields on the SDK side.

Normally, if you clear a field, you can use this code in the plugin to see if the field is being cleared:

            if (entity.Contains(“ita_integer”) && entity[“ita_integer”] == null)
             {
                 throw new InvalidPluginExecutionException(“Integer is null”);
             }

For example:

image

image

image

It does not seem to be the case for text fields anymore.

Below I have exactly the same code but for a text field this time:

            if (entity.Contains(“ita_notestallowedmessage”) && entity[“ita_notestallowedmessage”] == null)
             {
                 throw new InvalidPluginExecutionException(“No Test Allowed Message is null”);
             }

And it allows me to save the data just fine:

image

image

Although, if I query all the records where that field does not contain data, the record will come up.

So, for whatever reason, in this version of V9 I have to re-write that code for string fields like this:

if (entity.Contains(“ita_notestallowedmessage”) && (entity[“ita_notestallowedmessage”] == null || (string)entity[“ita_notestallowedmessage”] == “”))
             {
                 throw new InvalidPluginExecutionException(“Integer is null”);
             }

Then it works.. Something to keep in mind.

4 thoughts on “V9: Checking string fields for null”

  1. Ahmed el-Sawalhy

    Hello,
    Another form:

    if (string.IsNullOrEmpty(entity.GetAttributeValue(“ita_notestallowedmessage”)))
    {
    throw new InvalidPluginExecutionException(“String is null”);
    }

    Reply ↓
    1. Alex Shlega Post author

      Hi Ahmed,

      that code will work differently – GetAttributeValue will also return null when “ita_notestallowedmessage” is not being updated at all. When this happens, Contains will handle that situation correctly since it will return “false”, so there will be no error message.

      Reply ↓
  2. Nasir

    if (entity.Contains(“ita_notestallowedmessage”) && (entity[“ita_notestallowedmessage”] == null || (string)entity[“ita_notestallowedmessage”] == “”))
    {
    throw new InvalidPluginExecutionException(“Integer is null”);
    }

    Mr alex, first of all thank you for all this free contect.
    The code above seems to not work anymore, if i leave it blank it will save. But if i put a white space then the error will show up.

    Reply ↓
    1. Nasir

      never mind, i was thinking about the wrong way. It works just fine.

      Reply ↓

Leave a Reply

Your email address will not be published. Required fields are marked *