An error occurred while processing the template.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.hays.service.jobs.service.HaysJobsLocalService") [in template "20115#20151#56223" at line 31, column 35]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign assetEntryLocalService = serv... [in template "20115#20151#56223" at line 31, column 1]
----
1<#assign countryISO = locale?keep_after("_") />
2<#assign plId = layout.getPlid()>
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
4<#assign layoutEntry = assetEntryLocalService.fetchEntry("com.liferay.portal.kernel.model.Layout", plId)>
5<#assign assetCategories = layoutEntry.getCategories()/>
6<#assign assignedCategories = ""/>
7 <#list assetCategories as cat>
8 <#assign catName = cat.getName()>
9 <#assign catName += '|'>
10 <#assign assignedCategories += catName>
11 </#list>
12 <#assign assignedCategories = assignedCategories?keep_before("|")/>
13 <#assign subSpecialismId = "">
14 <#assign specialismId = "">
15 <#assign parentPlid = layout.getParentPlid()>
16 <#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
17 <#if assignedCategories?has_content >
18 <#assign nodeId = LayoutLocalService.getLayout(parentPlid).getExpandoBridge().getAttribute("NodeId")>
19 <#if nodeId == "job-seeker">
20 <#assign specialismId = assignedCategories>
21 <#else>
22 <#assign subSpecialismId = assignedCategories>
23 </#if>
24 </#if>
25 <#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale">
26 <#assign locale = propsUtil.get(ucmLocaleKey)/>
27
28<#assign keyword = "">
29
30<#assign count = "5">
31<#assign assetEntryLocalService = serviceLocator.findService("com.hays.service.jobs.service.HaysJobsLocalService") />
32<#if (assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale))??>
33<#assign getResponse = assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale)>
34 <#assign getResponseCount = getResponse.result.resultCount>
35 <#if (getResponseCount gte 30)>
36 <#assign ViewAllText = languageUtil.format(themeDisplay.getLocale(), "lr_ViewAllJobs",getResponseCount)/>
37<#else>
38<#assign getResponseCount = "">
39<#assign ViewAllText = languageUtil.format(themeDisplay.getLocale(), "lr_ViewAllJobs",getResponseCount)/>
40</#if>
41</#if>
42
43<script type="text/javascript">
44function wysToggle() {
45 if (window.jQuery && jQuery.isReady) {
46
47 var expand = $('<a href="javascript:void(0);" id="wysEvent" class="more"><span class="switch">${languageUtil.get(themeDisplay.getLocale(), "lr_ReadMore")}</span><span class="access"> on '+$('.box h1').text()+'</span></a>');
48
49 var totalContents = document.getElementById('wysToggle').innerHTML;
50 var totalHeight = $('#wysToggle').height();
51
52 if(totalHeight < 125) {
53
54 $('#wysEvent').hide();
55 }
56 else {
57 var newLimit = 0;
58 var currentHeight = 0;
59 /*Keep adding characters until the box is less than 105px height*/
60 while(currentHeight < 105) {
61 newLimit ++;
62 var newVisibleText = totalContents.substring(0,newLimit);
63 $('#wysToggle').html(newVisibleText);
64 currentHeight = $('#wysToggle').height();
65 }
66
67 /*With the new text, keep removing charatcers until I find the first blank space*/
68 //while(newVisibleText.charAt(newVisibleText.length-1) != " "){
69 while(!(/\s/.test(newVisibleText.charAt(newVisibleText.length-1)))){
70
71
72 var counter = newVisibleText.length-1;
73 newVisibleText = totalContents.substring(0,counter);
74
75 }
76
77 $('#wysToggle').html(newVisibleText);
78
79 $('#wysToggle > :last-child').append(expand);
80
81 }
82 $('#wysEvent').toggle(function(e){
83 $(this)
84 .detach()
85 .removeClass('more')
86 .addClass('less')
87 .children('.switch')
88 .text('${languageUtil.get(themeDisplay.getLocale(), "lr_ReadLess")}');
89 $('#wysToggle')
90 .html(totalContents)
91 .find('> :last-child')
92 .append(this);
93
94 e.preventDefault();
95 }, function(e){
96 $(this)
97 .detach()
98 .removeClass('less')
99 .addClass('more')
100 .children('.switch')
101 .text('${languageUtil.get(themeDisplay.getLocale(), "lr_ReadMore")}');
102 $('#wysToggle')
103 .html(newVisibleText)
104 .find('> :last-child')
105 .append(expand);
106 e.preventDefault()
107 });
108 }
109 else{
110 window.setTimeout(wysToggle, 100);
111 }
112 }
113 wysToggle();
114
115</script>
116<#assign responseSiteArray = propsUtil.get("RESPONSE_FRIENDLY_URLS")?split(",")>
117<#assign responseSiteCheck = responseSiteArray?seq_contains(themeDisplay.getLayout().getGroup().getFriendlyURL())?string("yes", "no")/>
118<div class="box bullet">
119 <#if Title?? && Title.getData()?has_content>
120 <h1 class="underline">${htmlUtil.unescape(Title.getData())}
121 <#if Title.SubTitle?? && Title.SubTitle.getData()?has_content>
122 <br><span class="hays-cyan" style="text-transform: none">${htmlUtil.unescape(Title.SubTitle.getData())}</span>
123 </#if>
124 </h1>
125 </#if>
126 <div class="content-img">
127 <#if SpecialismImage?? && SpecialismImage.getData() != "">
128 <#assign SpecialismImageData = SpecialismImage.getData()?replace("<p>", "")?replace("</p>", "")>
129 <#if themeDisplay.isSignedIn() && responseSiteCheck == "no">
130 <#if SpecialismImageData?contains("/" + themeDisplay.getLocale().getLanguage()) && !(SpecialismImageData?contains("href=\"http"))>
131 ${SpecialismImageData?replace("/" + themeDisplay.getLocale().getLanguage(), "/" + themeDisplay.getLocale().getLanguage() + "/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())}
132 <#elseif !(SpecialismImageData?contains("href=\"http"))>
133 ${SpecialismImageData?replace("href=\"", "href=\"/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())}
134 <#else>
135 ${SpecialismImageData}
136 </#if>
137 <#else>
138 ${SpecialismImageData}
139 </#if>
140 </#if>
141 <div class="hi_inner">
142 <div class="wysiwyg" id="wysToggle">
143 <#if themeDisplay.isSignedIn() && responseSiteCheck == "no">
144 <#if Summary.getData()?contains("/" + themeDisplay.getLocale().getLanguage()) && !(Summary.getData()?contains("href=\"http"))>
145 ${Summary.getData()?replace("/" + themeDisplay.getLocale().getLanguage(), "/" + themeDisplay.getLocale().getLanguage() + "/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())}
146 <#elseif !(Summary.getData()?contains("href=\"http"))>
147 ${Summary.getData()?replace("href=\"", "href=\"/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())}
148 <#else>
149 ${Summary.getData()}
150 </#if>
151 <#else>
152 ${Summary.getData()}
153 </#if>
154 </div>
155 </div>
156 <#assign count = "5">
157 <#assign assetEntryLocalService = serviceLocator.findService("com.hays.service.jobs.service.HaysJobsLocalService") />
158 <#if (assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale))??>
159 <#assign getResponse = assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale)>
160 <#assign getResponseCount = getResponse.result.resultCount>
161 <#if (getResponseCount !=0) && assignedCategories?has_content>
162 <#assign mobileUrlKey = themeDisplay.getLocale()+"."+siteType+"."+"Mobile_URL">
163 <a class="btn" id="googleJobs" href="${propsUtil.get(mobileUrlKey)}/search/?q=hays&s=%2BxReleaseDate&specialismId=${specialismId}&subSpecialismId=${subSpecialismId}&_ga=2.255521741.477195505.1538057228-1137019125.1538057228">${ViewAllText} <span id="gcsCountView"></span> ${languageUtil.get(themeDisplay.getLocale(), "")}</a>
164 </#if>
165 </#if>
166
167 </div>
168</div>
169
170
171<style>
172.access {
173 display: none!important;
174}
175</style>

Create your own job alerts to receive a notification about latest jobs directly to your inbox.


