处理模板时发生错误。
Java method "jdk.proxy3.$Proxy133.getOrganization(long)" threw an exception when invoked on jdk.proxy3.$Proxy133 object "com.liferay.portal.service.impl.OrganizationLocalServiceImpl@6ee7fe51"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign organizationByGroup = Organiz... [in template "91531405550289#20120#256501" at line 123, column 1]
----
1<link nonce="Nefx+w99qP/e7Ua27uGOEg==" nonce="9zPhIk/okhkmkSLqJD4eng==" rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">
2<style nonce="Nefx+w99qP/e7Ua27uGOEg==" nonce="9zPhIk/okhkmkSLqJD4eng==">
3*{ margin: 0; padding: 0; box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box;}
4img { border: 0; outline: none; display: block; }
5.aui .lfr-icon-action a img { display: inline-block; }
6.bannerArea.banner_home .container {width: 100%; }
7.eventArea .live { margin-left: 12px; padding: 5px 55px; color: #a0a6a6; line-height: 1.5; font-size: 17px; font-weight: 600; float: right; text-decoration: none; border: 1px solid #6F7070;
8 background-color: #6F7070; }
9.live.act { color: #fff; background-color: #002C5F; line-height: 1.5; border-color: #002C5F; }
10.eventArea .call-b { padding: 5px 25px; line-height: 1.5; font-size: 17px; font-weight: 600; color: #002C5F; border: 1px solid #002C5F; float: right; text-decoration: none;
11background-color: #fff; }
12.go-b { padding: 5px 15px; font-size: 17px; font-weight: 600; color: #002C5F; float: left; position: relative; }
13.go-b img { position: absolute; top: 10px; left: -5px;}
14.hide-content { display: none; }
15.show-content { display: block; }
16.p_l_r_48 { padding: 0px 48px !important; }
17.p_l_r_30 { padding: 0px 30px; }
18small, em { line-height: 1.5; }
19.eventArea .call-b:hover, .eventArea .go-b:hover { color: #002C5F; text-decoration: none; opacity: 0.5; }
20.eventArea .live:hover { color: #a0a6a6; text-decoration: none; opacity: 0.5; }
21.eventArea .live.act:hover { color: #fff; opacity: 0.5; }
22.overlay { width: 100%; height: 100%; position: absolute; left: 0; top: 0; background-color: #000; opacity: 0.5; z-index: 1; }
23.videoArea { width: 745px; height: 434px; border: 6px solid #fff; position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; z-index: 4; }
24.videoArea img { width: 100%; height: 100%; }
25.videoArea iframe { width: 100%; height: 100%; }
26.videoArea .close-pop { position: absolute; top: -14px; right: -14px; display: inline-block; padding: 6px; border-radius: 50%; background-color: #000; }
27.lunch-time { float: left; }
28.lunch-time small { font-size: 12px; font-weight: 400; color: #000; display: block; }
29.lunch-time em { font-size: 14px; font-weight: 600; color: #000; display: block; font-style: normal; }
30.bannerArea { width: 100%; position: relative; text-align: center; font-family: 'Open Sans', sans-serif; overflow: hidden; display: table;
31background: url('${banner.getData()}') no-repeat; height: 365px; background-size: cover; }
32.bannerArea .container { display: table-cell; vertical-align: middle; }
33.bannerArea.live-video { height: calc(100vh - 102px); }
34.bannerArea .launch { margin: auto; max-width: 550px; overflow: hidden; position: relative; z-index: 2; }
35.bannerArea small { font-size: 20px; font-weight: 600; color: #fff; }
36.bannerArea h3 { margin: 10px 0 10px 0; font-size: 48px; font-weight: 600; color: #fff; line-height: 1.2; }
37.bannerArea p { color: #fff; font-weight: 500; line-height: 1.2; }
38ul.time { margin: 0; width: 100%; list-style: none; text-align: center; line-height: 1.5; }
39ul.time li { margin: 0 31px; display: inline-block; }
40ul.time h4 { margin: 0px 0 3px; font-size: 41px; font-weight: 600; color: #fff; line-height: 1.2; }
41ul.time span { font-size: 16px; font-weight: 600; color: #fff; display: block; }
42.bannerArea a.live { margin: 20px 0 0; display: inline-block; float: none; line-height: 1.5; color: #a0a6a6; }
43.bannerArea a.live:hover { text-decoration: none; }
44ul.time.day { width: auto; float: left;}
45ul.time.day li { margin: 0 8px; }
46ul.time.day li:first-child { margin-left: 0; }
47ul.time.day h4 { font-size: 12px; font-weight: 800; color: #000; }
48ul.time.day span { font-size: 12px; color: #333333; }
49.pagination { float: right; }
50.pagination .page-link{ font-size: 14px; font-weight: 400;color: #002C5F; }
51.pagination .page-item.active .page-link { font-size: 14px; color: #fff; background-color: #002C5F; }
52.pageArea { margin: 5px 0 0; font-size: 14px; color: #666666; font-weight: 400; display: inline-block; }
53.pageArea p { margin: 0; }
54.eventArea { padding: 21px 0; width: 100%; overflow: hidden; font-family: 'Open Sans', sans-serif; }
55.eventArea .more { margin-bottom: 28px; width: 100%; border-bottom: 1px solid #BFC0BF; }
56.eventArea h3 { padding-bottom: 14px; margin: 0; font-size: 20px; font-weight: 600; color: #333333; }
57.eventArea .event { padding: 22px 18px; width: 100%; overflow: hidden;border-bottom: 1px solid #BFC0BF; }
58.eventArea .event span { display: inline-block; font-size: 16px; font-weight: 600; color: #000; position: relative; }
59.eventArea .event img.live-icon { position: absolute; right: -65px; top: 1px; }
60.eventArea .event p {margin: 8px 0 25px; font-size: 12px; line-height: 16px; font-weight: 400; color: #333333; }
61.eventArea .photo { float: left; width: 21%; }
62.eventArea .photo img { max-width: 100%; width: 215px; height: 140px; }
63.eventArea .detail { padding: 0 0 0 35px; float: left; width: 79%; }
64.callArea { padding: 30px 0; width: 100%; height: 102px; overflow: hidden; }
65table.dataTable.no-footer {
66 border-bottom: 0 none;
67}
68@media only screen and (max-width:1023px){
69.p_l_r_48 { padding: 0 15px; }
70.p_l_r_30 { padding: 0; }
71.bannerArea { height: 300px; }
72.bannerArea h3 { font-size: 40px; }
73ul.time h4 { font-size: 24px; }
74ul.time li { margin: 0 15px; }
75ul.time span { font-size:14px; }
76.eventArea .event { padding: 20px 15px; }
77.call-b, .live { font-size: 13px; }
78.videoArea { width: 600px; height: 300px;}
79.bannerArea.live-video { height: 430px; }
80.go-b { font-size: 13px; }
81.callArea { height: 95px; }
82.bannerArea.live-video { height: calc(100vh - 95px); }
83.go-b img { top: 8px; left: -3px; width: 14px; }
84 }
85
86@media only screen and (max-width:767px){
87.bannerArea { margin-top:-6px; }
88.eventArea h3 { font-size: 18px; }
89.eventArea .event span { font-size: 15px;}
90.eventArea .detail { padding: 15px 0 0; width: 100%; }
91ul.time.day, .lunch-time { margin-bottom: 15px; }
92.bannerArea small { font-size: 15px; }
93.bannerArea h3 { font-size: 28px; }
94ul.time li { margin: 0 5px; }
95ul.time h4 { font-size: 16px;}
96ul.time span { font-size: 13px; }
97.eventArea .photo { width: 100%; }
98.eventArea .photo img { width: 100%; height:auto;}
99.videoArea { width: 310px; height: 200px; }
100.bannerArea.live-video { height: calc(100vh - 85px); }
101.callArea { padding: 25px 0; height: 85px; }
102}
103@media screen and (min-width: 320px) and (max-width: 359px) {
104 .eventArea .live {padding: 5px 25px;}
105}
106@media screen and (min-width: 359px) and (max-width: 767px) {
107 .eventArea .live {padding: 5px 20px;}
108}
109</style>
110
111
112<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
113<#assign themeDisplay = serviceContext.getThemeDisplay() />
114
115<#-- Group Id -->
116<#assign group_Id = themeDisplay.getLayout().getGroupId() />
117<#-- Dealer Code -->
118
119<#assign OrganizationService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")/>
120<#assign GroupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")/>
121<#assign group = GroupLocalService.getGroup(themeDisplay.getScopeGroupId())/>
122<#assign organizationByGroup = OrganizationService.getOrganization(group.getClassPK())/>
123<#assign DealerCode = organizationByGroup.getExpandoBridge().getAttribute("Dealer Code")/>
124
125
126
127
128<input type="hidden" id="eventStartTime" value="" />
129<input type="hidden" id="eventDate" value="" />
130
131<div class="bannerArea banner_home">
132 <div class="container">
133 <div class="launch">
134 <small id="eventDateInBanner"> </small>
135 <h3 id="eventNameInBanner"> </h3>
136 <p id="eventDescriptionInBanner"> </p>
137 <ul id="countdown-section" class="time"> </ul>
138 <div class="eventArea" id="liveButtonInBanner"> </div>
139 </div>
140 </div>
141 <div class="overlay"></div>
142</div>
143
144<div class="eventArea">
145 <div class="more">
146 <div class="container p_l_r_48">
147 <h3>More Events</h3>
148 </div>
149 </div>
150
151 <div class="container p_l_r_30">
152 <div id="dynamicEventsSection">
153 <!-- DATA TABLE -->
154 <table id="event-list-table" style="width:100%">
155 <thead style="display:none">
156 <tr>
157 <th>Events through Pagination</th>
158 </tr>
159 </thead>
160 <tbody id="event-list-body">
161
162 </tbody>
163 </table>
164 <!-- DATA TABLE ENDS -->
165 </div>
166 </div>
167</div>
168
169<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
170<script type="text/javascript" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
171<script>
172 var countdownTimer;
173 $(document).ready(function() {
174
175 });
176
177 function getEventList() {
178 console.log("Inside getEventList method !!");
179 var serviceDomain = 'https://efflux.myhyundai.co.in';
180 var apiKey = 'test_70P6X3KN';
181 var dealerCode = '${DealerCode}';
182 var recordsPerPage = '30';
183 var currentPage = '1';
184 var eventListURL = serviceDomain + '/api/get_event_list/?api_key='+apiKey+'&dealer_code='+dealerCode+'&records_per_page='+recordsPerPage+'¤t_page='+currentPage;
185 console.log("Event Listing URL :: " + eventListURL);
186
187 $.ajax({
188 url : eventListURL,
189 type: 'GET',
190 dataType: 'json',
191 success: function(response) {
192 var eventsHtml = "";
193 var bannerHtml = "";
194 console.log("Success in getting List of Events !!");
195 var jsonData = response;
196 for (var i = 0; i < jsonData.data.length; i++) {
197 var counter = jsonData.data[i];
198 if(i==0) {
199 bannerHtml = "<a href='/live-broadcasting/live-stream?eventId="+counter.event_id+"' id='countdown-live-button' style='pointer-events:none;' class='live'>Go Live</a>";
200 $("#liveButtonInBanner").append(bannerHtml);
201 $("#eventNameInBanner").append(counter.event_name);
202 $("#eventDescriptionInBanner").append(counter.event_description);
203 $("#eventDateInBanner").append(counter.event_date);
204 $("#eventStartTime").val(counter.event_start);
205 $("#eventDate").val(counter.event_date);
206 }
207 else {
208 eventsHtml = "<div class='event'><div class='photo'><img src='"+counter.event_image+"' alt='' id='eventImage'></div><div class='detail'><span id='eventName'>"+counter.event_name+"</span><p id='eventDescription'>"+counter.event_description+"</p><div class='lunch-time'><small>Launch Time & Date</small><span id ='eventDateTime'><em>"+counter.event_start+" and "+counter.event_date+"</em></span></div><a href='/live-broadcasting/live-stream?eventId="+counter.event_id+"' class='live' style='pointer-events:none'>Go Live</a></div></div>";
209 // $("#dynamicEventsSection").append(eventsHtml);
210 var trtd = '<tr><td>' + eventsHtml + '</td></tr>';
211 $('#event-list-table').find('tbody').append(trtd);
212 }
213 }
214 // Applying DataTable
215 console.log("Applying Datatable !!");
216 table = $("#event-list-table").DataTable
217 ({
218 "pageLength": 4,
219 "bLengthChange": false,
220 "bFilter": false,
221 "info": false,
222 "pagingType": "simple_numbers"
223 });
224 countdown();
225 },
226 error: function() {
227 console.log('Error Occured in fetching Event Listing !!');
228 }
229 });
230 }
231
232 getEventList();
233
234 function countdown() {
235 console.log("Inside countdown Method !!");
236 var eventStartTime = $("#eventStartTime").val();
237 var eventDate = $("#eventDate").val();
238 var newEventDate = eventDate.split("/").reverse().join("-");
239 console.log("Event Start Time :: " + eventStartTime);
240 console.log("Event Date :: " + eventDate);
241 console.log("New Event Date :: " + newEventDate);
242
243 var eventDateAndTime = new Date(newEventDate + 'T' + eventStartTime);
244 console.log("Event Date and Time :: " + eventDateAndTime);
245 var currentDateAndTime = new Date();
246 console.log("Current Date and Time :: " + currentDateAndTime);
247
248 if(currentDateAndTime < eventDateAndTime) {
249 console.log("Event has not started yet, hence show countdown timer !!");
250 var differenceInTime = Math.abs((eventDateAndTime-currentDateAndTime)/1000);
251 console.log("Difference in seconds :: " + differenceInTime);
252 var diff = Math.floor(differenceInTime);
253 console.log("Difference in seconds (without decimal) :: " + diff);
254 var seconds = diff;
255
256 countdownTimer = setInterval(function () {
257 var days = Math.floor(seconds/24/60/60);
258 var hoursLeft = Math.floor((seconds) - (days*86400));
259 var hours = Math.floor(hoursLeft/3600);
260 var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
261 var minutes = Math.floor(minutesLeft/60);
262 var remainingSeconds = seconds % 60;
263 function pad(n) {
264 return (n < 10 ? "0" + n : n);
265 }
266
267 document.getElementById('countdown-section').innerHTML = '<li><h4>'+pad(days)+'</h4><span>Day</span></li>' +
268 '<li><h4>'+pad(hours)+'</h4><span>Hours</span></li>' +
269 '<li><h4>'+pad(minutes)+'</h4><span>Minutes</span></li>' +
270 '<li><h4>'+pad(remainingSeconds)+'</h4><span>Seconds</span></li>';
271 if (seconds == 0) {
272 clearInterval(countdownTimer);
273 $("#countdown-section").hide();
274 $("#countdown-live-button").css("pointer-events", "auto");
275 document.getElementById("countdown-live-button").classList.add("act");
276 } else {
277 seconds--;
278 }
279 }, 1000);
280 }
281 else {
282 console.log("Event has already started !!");
283 clearInterval(countdownTimer);
284 $("#countdown-section").hide();
285 $("#countdown-live-button").css("pointer-events", "auto");
286 document.getElementById("countdown-live-button").classList.add("act");
287 }
288 }
289
290</script>
291
292<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script>
293<script type="text/javascript" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>