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>
Search for jobs
Career coach
We help you through all stages of your career. Read more about:
Check your salary
Discover your potential; check your salary against others like you and find out what your potential earnings should be.
Hays & our approach
Applying for a job can be a big step so we understand you might want to know more about who we are and how we work.
- ► View our job application process
- ► Read more about Hays
The Power of Hays
In this video we show how Hays can help you power your career.
Why candidates choose us
- ► We give tips and tricks that will help your application succeed
- ► Thanks to our strong relations, your CV will always be on top of the pile
- ► Jobs not yet visible on job boards will be brought to your attention
- ► We'll negotiate on your behalf about salary requirements or salary expectations
We are proud of
- ► More than 8 million followers on LinkedIn
- ► More than 50 years of international experience
Find your new job
Find perm jobs
Find temp jobs
Find contracting jobs
Jobs in Amsterdam
Jobs in Eindhoven
Jobs in Nijmegen
Receive jobs automatically
Send your CV


