An error occurred while processing the template.
The following has evaluated to null or missing:
==> assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale)  [in template "20115#20151#56223" at line 163, column 24]

----
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 getResponse = assetEntryLocal...  [in template "20115#20151#56223" at line 163, 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       
117 
118<div class="box bullet"> 
119         <h1 class="underline">${Title.getData()} 
120          <#if Title.SubTitle??> 
121           <br> 
122              <span class="hays-cyan" style="text-transform: none">${Title.SubTitle.getData()}</span> 
123          </h1> 
124           <#else> 
125	        </h1> 
126          </#if> 
127<div class="content-img"> 
128<#if SpecialismImage?? && SpecialismImage.getData() != ""> 
129<#assign SpecialismImageData = SpecialismImage.getData()?replace("<p>", "")?replace("</p>", "")> 
130    <#if themeDisplay.isSignedIn()> 
131		<#if SpecialismImageData?contains("/" + themeDisplay.getLocale().getLanguage()) && !(SpecialismImageData?contains("href=\"http"))> 
132			${SpecialismImageData?replace("/" + themeDisplay.getLocale().getLanguage(), "/" + themeDisplay.getLocale().getLanguage() + "/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())} 
133		<#elseif !(SpecialismImageData?contains("href=\"http"))> 
134			${SpecialismImageData?replace("href=\"", "href=\"/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())} 
135		<#else> 
136			${SpecialismImageData} 
137		</#if> 
138	<#else> 
139		${SpecialismImageData} 
140	</#if> 
141 
142 
143</#if> 
144            <div class="hi_inner"> 
145               <div class="wysiwyg" id="wysToggle">	 
146                  <#if themeDisplay.isSignedIn()> 
147					<#if Summary.getData()?contains("/" + themeDisplay.getLocale().getLanguage()) && !(Summary.getData()?contains("href=\"http"))> 
148						${Summary.getData()?replace("/" + themeDisplay.getLocale().getLanguage(), "/" + themeDisplay.getLocale().getLanguage() + "/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())} 
149					<#elseif !(Summary.getData()?contains("href=\"http"))> 
150						${Summary.getData()?replace("href=\"", "href=\"/web" + themeDisplay.getLayout().getGroup().getFriendlyURL())} 
151					<#else> 
152						${Summary.getData()} 
153					</#if> 
154				<#else> 
155					${Summary.getData()} 
156				</#if> 
157                  </div> 
158            </div> 
159       
160<#assign count = "5"> 
161<#assign assetEntryLocalService = serviceLocator.findService("com.hays.service.jobs.service.HaysJobsLocalService")  /> 
162<#if (assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale))??> 
163<#assign getResponse = assetEntryLocalService.getjobs(keyword, specialismId, subSpecialismId, count, locale)> 
164 <#assign getResponseCount = getResponse.result.resultCount> 
165 <#if (getResponseCount !=0) && assignedCategories?has_content> 
166 <#assign mobileUrlKey = themeDisplay.getLocale()+"."+siteType+"."+"Mobile_URL"> 
167 <#assign siteLang = themeDisplay.getLocale()?keep_before("_")> 
168<a class="btn" id="googleJobs" href="${propsUtil.get(mobileUrlKey)}/search/?lang=${siteLang}&q=hays&amp;s=%2BxReleaseDate&amp;specialismId=${specialismId}&amp;subSpecialismId=${subSpecialismId}&amp;_ga=2.255521741.477195505.1538057228-1137019125.1538057228">${ViewAllText} <span id="gcsCountView"></span> ${languageUtil.get(themeDisplay.getLocale(), "")}</a> 
169</#if>   
170	 </#if>      
171	     
172      </div> 
173      </div> 
174       
175 
176<style> 
177.access { 
178    display: none!important; 
179
180</style> 

Salary Checker

Does your salary match your job title? Enter your details below to see how your salary compares to averages in your sector, and find out top benefits offered by employers.

Check your salary

Job Alerts

Hays job alerts make your search for the ideal job as easy as possible. Save an alert and we'll email you with the latest job vacancies matching your search criteria as they are advertised.

Set up now

Career Advice

We aim to provide you, the jobseeker, with information, tips & guidance so that you feel as prepared as possible in the hunt for your new dream job or when asking for a promotion.

Read more