Có lỗi xảy ra trong quá trình xử lý biểu mẫu.
Java method "com.sun.proxy.$Proxy2430.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy2430 object "com.liferay.journal.change.tracking.internal.service.CTJournalArticleLocalServiceWrapper@f64a6ab"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign article = journalArticleLocal... [in template "34201#34227#5008789" at line 13, column 1] ----
1<#assign
2 title = .vars['reserved-article-title'].data
3 portalURL = themeDisplay.getPortalURL()
4 currentUrl = portalURL + themeDisplay.getURLCurrent()
5 imageUrl = portalURL + .vars['reserved-article-small-image-url'].data
6 srcfb = "https://www.facebook.com/plugins/like.php?href=${currentUrl}&width=172&layout=button_count&action=like&size=small&share=true&height=46&appId=2034212100232051"
7 displayDate = .vars['reserved-article-display-date'].data
8 summary = .vars['reserved-article-description'].data/>
9
10<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
11<#assign scopeId = themeDisplay.getScopeGroupId()>
12<#assign contentId = .vars['reserved-article-id'].data>
13<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(scopeId), contentId)>
14<#assign articlePrimKey = article.resourcePrimKey>
15<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
16<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
17<#assign articleCatId = catLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))>
18<#assign categoryList = catLocalService.getAssetEntryAssetCategories(getterUtil.getLong(articlePrimKey))>
19<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
20<#if (request.getParameter("plidlayout")?has_content)>
21 <#assign plidlayout = request.getParameter("plidlayout") />
22 <#else>
23 <#assign plidlayout = 2 />
24</#if>
25<#assign layout = layoutService.fetchLayout(plidlayout?number) />
26<#assign curLayout = layoutService.fetchLayout(plid?number) />
27<#assign pageTitle = layout.getName(locale) />
28<#assign pageUrl = layout.getFriendlyURL(locale) />
29<#assign curPageTitle = curLayout.getName(locale) />
30<#assign originalLocale = .locale>
31<#setting locale = localeUtil.getDefault()>
32<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
33<#assign locale = originalLocale>
34<#assign displayDate = displayDate?string("HH:mm dd/MM/yyyy")>
35<#assign listLayoutDHD = [5474,5512,179]>
36<#assign layo = themeDisplay.getPlid() />
37<#assign articleCatIds = "" />
38<#list articleCatId as item>
39 <#assign articleCatIds = articleCatIds + item + "," />
40</#list>
41<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')>
42<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
43<#assign search = assetEntryQuery.setAllCategoryIds(articleCatId)>
44<#assign search = assetEntryQuery.setOrderByCol1("publishDate")/>
45<#assign search = assetEntryQuery.setStart(0)/>
46<#assign search = assetEntryQuery.setEnd(10)/>
47<#assign search = assetEntryQuery.setOrderByType1("DESC")/>
48<#assign teste = assetEntryQueryService.getEntries(assetEntryQuery)
49 totalPage = 0/>
50
51 <liferay-util:html-top outputKey="htmltop" style="display:none;">
52 <meta name="title" property="og:title" content="${title}"/>
53 <meta name="image" property="og:image" content="${imageUrl}"/>
54 <meta name="image" property="og:image:secure_url" content="${imageUrl}"/>
55 <meta name="description" property="og:description" content="${summary?replace("<p>","")?replace("</p>","")}"/>
56 <meta name="url" property="og:url" content="${currentUrl}"/>
57</liferay-util:html-top>
58<script src="https://sp.zalo.me/plugins/sdk.js"></script>
59
60<article class="noidung">
61 <#if listLayoutDHD?seq_index_of(layo) > -1 >
62 <ol class="breadcrumb">
63 <li class="breadcrumb-item"><a href="#">Trang chủ</a></li>
64 <li class="breadcrumb-item active">Tin tức</li>
65 </ol>
66 <#else>
67 <#assign journalArticleId = .vars['reserved-article-id'].data>
68 <#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]>
69 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]>
70 <#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/>
71 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >
72 <ol class="breadcrumb">
73 <li class="breadcrumb-item"><a href="#">Trang chủ</a></li>
74 <#list categoryList as thisCategory>
75 <#if (thisCategory_index==0)>
76 <li class="breadcrumb-item active">${thisCategory.getName()}</li>
77 </#if>
78 </#list>
79 </ol>
80 </#if>
81
82 <header class="clearfix">
83 <h3 class="tieudebaiviet mb-4 text-justify">${title}</h3>
84 <span class="float-left time"> ${displayDate}</span>
85 <div class="icontrogiup float-right mb-3">
86 <i class="fas fa-volume-up btndoc"></i>
87 <i class="fas fa-volume-mute btntat an"></i>
88 <i>|</i>
89 <i class="fas fa-file-alt btngiamtuongphan"></i>
90 <i class="far fa-file-alt btntangtuongphan"></i>
91 <i>|</i>
92 <i class="fas fa-search-minus btnchunho"></i>
93 <i class="fas fa-search btnchubinhthuong"></i>
94 <i class="fas fa-search-plus btnchulon"></i>
95 <i>|</i>
96 <i class="fas fa-print btnin"></i>
97 <i class="fas fa-envelope"></i>
98 <i class="fas fa-download"></i>
99 <input type="hidden" id="baiVietId" name="baiVietId" value="${articlePrimKey}"></input>
100 <input type="hidden" id="commentId" name="commentId" value=""></input>
101 <input type="hidden" id="tieuDe" name="tieuDe" value="${title?html}"></input>
102 <input type="hidden" id="articleCatIds" name="articleCatIds" value="${articleCatIds}"></input>
103 <input type="hidden" value="1" id="curPage"/>
104 <input type="hidden" value="0" id="totalRelated"/>
105 </div>
106 </header>
107 <div class="tomtat text-justify">${summary}</div>
108 <div class="noidungchitiet">
109 ${noiDung.getData()?replace("audioPreview=1","audioPreview=0")}
110 </div>
111 <div class="hinhtacgia">
112 <div class="hinhtacgiachitiet">
113 <#if tacGia?has_content && tacGia.getOptions()?has_content>
114 <#list tacGia.getOptions() as item>
115 <#if item?has_content>
116 <#assign u = userLocalService.fetchUser(item?number)/>
117 <#if u?has_content>
118 <#if u.getExpandoBridge()?has_content && u.getExpandoBridge().getAttribute("Bút danh")?has_content && u.getExpandoBridge().getAttribute("Email cá nhân")?has_content>
119 <#assign ten = u.getExpandoBridge().getAttribute("Bút danh")/>
120 <#assign email = u.getExpandoBridge().getAttribute("Email cá nhân")/>
121 </#if>
122 <#assign portraitURL = u.getPortraitURL(themeDisplay)/>
123 <#if ten?has_content && email?has_content>
124 <a href="/ve-chung-toi">
125 <img src="${portraitURL}" alt="">
126 </a>
127 <div class="right">
128 <h4><a href="/ve-chung-toi" title="">${ten}</a></h4>
129 <a href="mailto:${email}">${email}</a>
130 </div>
131 </#if>
132 </#if>
133 </#if>
134 </#list>
135 </#if>
136 </div>
137
138 <!-- tac gia 2 -->
139 <#if congTacVien?has_content && congTacVien.tenCongTacVien?has_content && congTacVien.emailCongTacVien?has_content && congTacVien.tenCongTacVien.getData()?has_content>
140 <#assign tenCongTacVien = congTacVien.tenCongTacVien.getData()/>
141 <#assign emailCongTacVien = congTacVien.emailCongTacVien.getData()/>
142 <div class="hinhtacgiachitiet ctt">
143 <a href="/ve-chung-toi">
144 <img src="/documents/34223/2640277/avata.jpg" alt="">
145 </a>
146 <div class="right">
147 <h4><a href="/ve-chung-toi" title="">${tenCongTacVien}</a></h4>
148 <a href="mailto:${emailCongTacVien}">${emailCongTacVien}</a>
149 </div>
150 </div>
151 </#if>
152 </div><!-- end hinh tac gia -->
153
154 <div class="social-buttons">
155 <button class="quantam" id="quantam" onclick="follow(${articlePrimKey},'${title?html}');">
156 </button>
157 <!-- <div class="zalo-follow-only-button" data-oaid="3540423014405379625" style="width: 88px;"></div> -->
158 <div class="zalo-share-button" data-href="${currentUrl}" data-oaid="4499765515963062717" data-layout="1" data-color="blue"></div>
159 <iframe src="${srcfb}" width="140" height="35" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
160 </div>
161 </article>
162 <div class="row ml-0 mr-0 relatedentry2" id="relatedentry2">
163
164 </div>
165 <div style="text-align: center">
166 <div class="pagination2" style="position: relative; justify-content: center;">
167 Hiển thị
168 <select id="pageSize" onchange="changePageSize2();">
169 <option>10</option>
170 <option>20</option>
171 <option>30</option>
172 </select>
173 Tới trang
174 <select id="pageIndex" onchange="changePageIndex2();">
175 <option>1</option>
176 </select>
177 của <span id="totalPage" style="vertical-align: middle;font-size: 12px;">135</span>
178 <a id="previousP" onclick="previousPP2();"><</a>
179 <a id="nextP" onclick="nextPP2();">></a>
180 </div>
181 </div>
182
183<script>
184 $(document).ready(function () {
185 var modal = $('.modal-thongtin');
186 var btn = $('.btnsend');
187 var button_dt = $('.button-dt');
188 var button_dt_close = $('.button-dt-close');
189 var span = $('.close');
190 var baiVietId = $('#baiVietId');
191 var tieuDe = $('#tieuDe');
192 var commentContent = $('#commentContent');
193 var commentName = $('#commentName');
194 var commentAddress = $('#commentAddress');
195 var commentEmail = $('#commentEmail');
196
197 btn.click(function () {
198 if (commentContent.val().length == 0) {
199 alert('Vui lòng nhập nội dung ý kiến!');
200 } else {
201 modal.show();
202 btn.hide();
203 }
204 });
205
206
207 button_dt.click(function () {
208 const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
209 if (commentName.val().length == 0) {
210 commentName.css('border-color', 'red');
211 commentName.focus();
212 } else if (commentAddress.val().length == 0) {
213 commentAddress.css('border-color', 'red');
214 commentAddress.focus();
215 } else if (commentEmail.val().length == 0) {
216 commentEmail.css('border-color', 'red');
217 commentEmail.focus();
218 } else if (!valid.test(commentEmail.val())) {
219 commentEmail.css('border-color', 'red');
220 commentEmail.focus();
221 alert('Vui lòng nhập đúng email!');
222 }else {
223 comment(baiVietId.val(), tieuDe.val(), commentContent.val(), commentName.val(), commentAddress.val(), commentEmail.val(), ${groupId});
224 commentContent.val('');
225 commentName.val('');
226 commentAddress.val('');
227 commentEmail.val('');
228 modal.hide();
229 btn.show();
230 }
231 });
232
233 button_dt_close.click(function () {
234 commentContent.val('');
235 commentName.val('');
236 commentAddress.val('');
237 commentEmail.val('');
238 commentName.css('border-color', '#ccc');
239 commentAddress.css('border-color', '#ccc');
240 commentEmail.css('border-color', '#ccc');
241 modal.hide();
242 btn.show();
243
244 });
245
246 span.click(function () {
247 commentContent.val('');
248 commentName.val('');
249 commentAddress.val('');
250 commentEmail.val('');
251 modal.hide();
252 $('.replyBox').hide();
253 btn.show();
254
255 $('.inputReplyContent').val('');
256 commentNameReply.val('');
257 commentAddressReply.val('');
258 commentEmailReply.val('');
259 modal_reply.hide();
260 $('.replyBox').hide();
261 btnreply.show();
262 });
263
264 $(window).on('click', function (e) {
265 if ($(e.target).is('.modal-thongtin')) {
266 commentContent.val('');
267 commentName.val('');
268 commentAddress.val('');
269 commentEmail.val('');
270 modal.hide();
271 btn.show();
272 }
273 if ($(e.target).is('.modal-thongtin-reply')) {
274 $('.inputReplyContent').val('');
275 commentNameReply.val('');
276 commentAddressReply.val('');
277 commentEmailReply.val('');
278 modal_reply.hide();
279 btnreply.show();
280 }
281 });
282
283
284 var modal_reply = $('.modal-thongtin-reply');
285 var btnreply = $('.btnreply');
286 var button_dt_reply = $('.button-dt-reply');
287 var button_dt_reply_close = $('.button-dt-reply-close');
288 var span = $('.close');
289 var commentNameReply = $('#commentNameReply');
290 var commentAddressReply = $('#commentAddressReply');
291 var commentEmailReply = $('#commentEmailReply');
292
293 function submitreply() {
294 var commentId = $('#commentId').val();
295 if ($('#inputReplyContent' + commentId).val().length == 0) {
296 alert('Vui lòng nhập nội dung ý kiến!');
297 } else {
298 modal_reply.show();
299 $('#commentContentReply').val($('#inputReplyContent' + commentId).val());
300 btnreply.hide();
301 }
302 }
303
304 button_dt_reply.click(function () {
305 if (commentNameReply.val().length == 0) {
306 commentNameReply.css('border-color', 'red');
307 } else if (commentAddressReply.val().length == 0) {
308 commentAddressReply.css('border-color', 'red');
309 } else if (commentEmailReply.val().length == 0) {
310 commentEmailReply.css('border-color', 'red');
311 } else {
312 replyComment($('#commentId').val(),baiVietId.val(), tieuDe.val(), $('#commentContentReply').val(), commentNameReply.val(), commentAddressReply.val(), commentEmailReply.val());
313 $('.inputReplyContent').val('');
314 commentNameReply.val('');
315 commentAddressReply.val('');
316 commentEmailReply.val('');
317 modal_reply.hide();
318 }
319 });
320
321 button_dt_reply_close.click(function () {
322 $('.inputReplyContent').val('');
323 commentNameReply.val('');
324 commentAddressReply.val('');
325 commentEmailReply.val('');
326 modal_reply.hide();
327
328 });
329 });
330
331 function submitreply() {
332 var commentId = $('#commentId').val();
333 if ($('#inputReplyContent' + commentId).val().length == 0) {
334 alert('Vui lòng nhập nội dung ý kiến!');
335 } else {
336 $('.modal-thongtin-reply').show();
337 $('#commentContentReply').val($('#inputReplyContent' + commentId).val());
338 $('.btnreply').hide();
339 }
340 }
341
342 function changePageSize2(){
343 var pageSize = $('#pageSize').val();
344 var pageIndex = $('#pageIndex').val();
345 paginate2(pageIndex, pageSize);
346 }
347
348 function changePageIndex2(){
349 var pageSize = $('#pageSize').val();
350 var pageIndex = $('#pageIndex').val();
351 $('#curPage').val(pageIndex);
352 paginate2(pageIndex, pageSize);
353 }
354
355
356</script>