Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Get Display Value Using Variable for Field Value

rchadek
Kilo Contributor

So, I have a UI Page with the code below in the HTML box and I want to get the Display Value of the 'channel' variable from the 'oo_line_item' GlideRecord.

Rather than writing a 'getDisplayValue' for every case, I'm trying to condense the code so that the field I'm trying to get the display value for is determined dynamically.

I can see that I'm getting the correct value assigned to the 'channel' variable. But this line isn't working: oo_line_item.channel.getDisplayValue();

Is it possible to run the getDisplayValue() method on a dynamic field value?

${ var site = 'site_oo_' }

<j:choose>

                        <j:when test="${ oo_line_item.property.getDisplayValue()   == 'Austin' }">

                              ${ var market = 'austin'; }        

                        </j:when>

                        <j:when test="${ oo_line_item.property.getDisplayValue()   == 'Charlotte' }">

                              ${ var market = 'charlotte'; }        

                        </j:when>

                        <j:when test="${ oo_line_item.property.getDisplayValue()   == 'Dayton' }">

                              ${ var market = 'dayton'; }        

                        </j:when>

</j:choose>

${ var channel = site.concat(market); }

${ var channel_display = oo_line_item.channel.getDisplayValue(); }

<div class="oo-site-channel">

            ${ channel_display }

</div>

3 REPLIES 3

Chuck Tomasi
Tera Patron

Hi Ryan,



Aren't all fields dynamic values? 🙂



Since you just declared channel, it's not going to have a getDisplayValue() method. That's something that comes along with many of the ServiceNow objects & properties. Not knowing what site and market are, perhaps you could use



${var channel = site.concat(market.getDisplayValue()); }



also, take a look at the Switch statement in Jelly instead of lots of if or when statements... The first the videos in this playlist might help.



TechNow - YouTube


Mr. Tomasi!



I'm honored to be talking to you. Love the YouTube series! Still new to ServiceNow and Jelly. I'll work on restructuring this logic into a switch statement.



I tried that suggestion but it didn't work. Basically, the 'property' variable determines which channel field displays on the form. So, in this example, it might be:



site_oo_austin


site_oo_charlotte


site_oo_dayton



So, for Austin, I would want:



<div class="oo-site-channel">


            ${ oo_line_item.site_oo_austin.getDisplayValue(); }


</div>



I could put those divs into each <j:when> like so:



<j:when test="${ oo_line_item.property.getDisplayValue()   == 'Austin' }">


        <div class="oo-site-channel">


                      ${ oo_line_item.site_oo_austin.getDisplayValue(); }


        </div>


</j:when>



But it seems like that would produce a bunch of redundant code - which I'm trying to avoid.



To simplify, should something like this work?



<j:when test="${ oo_line_item.property.getDisplayValue()   == 'Austin' }">


            ${ var VARIABLE = 'site_oo_austin'; }        


</j:when>



${ oo_line_item.VARIABLE.getDisplayValue(); }


Step 1: Get it working with the 'static' solution. As you learn, new methods may appear that let you do this dynamically and reduce repeating code. At this point I don't have a solution.



Thank you for the kind words! Glad you enjoy the videos.