Our Work

Overriding Core JSP file using Liferay 7 Hook

Updated today

There are few scenarios that you might want to modify the JSPs to override which are no longer in Liferay’s core and you can do core JSP customizations to a specific site.


As you can see, the above screen represents before you begin crafting a module to override core JSPs.

In the below example you can restrict global vocabularies and categories with in site scope and it was achieved by implementing hook in Liferay 7 environment.

If you’re overriding,


put the overridden JSP in this folder of your module: to achieve it.

long[] groupIds = (long[])request.getAttribute("liferay-ui:asset-categories-selector:groupIds");
if (ArrayUtil.isEmpty(groupIds)) {
groupIds = PortalUtil.getCurrentAndAncestorSiteGroupIds(scopeGroupId);
else {
groupIds = PortalUtil.getCurrentAndAncestorSiteGroupIds(groupIds);
long grpId = GetterUtil.getLong(PropsUtil.get("extranet.groupid"));
long globalGrpId = GetterUtil.getLong(PropsUtil.get("global.groupid"));
groupIds = ArrayUtil.remove(groupIds, globalGrpId);
List<AssetVocabulary> vocabularies = AssetVocabularyServiceUtil.getGroupVocabularies(groupIds);
<aui:script use="liferay-asset-categories-selector">
new Liferay.AssetCategoriesSelector(
className: '<%= className %>',
contentBox: '#<%= namespace + randomNamespace %>assetCategoriesSelector_<%= vocabulary.getVocabularyId() %>',
curEntries: '<%= HtmlUtil.escapeJS(categoryIdsTitles[1]) %>',
curEntryIds: '<%= categoryIdsTitles[0] %>',
hiddenInput: '#<%= namespace + hiddenInput + StringPool.UNDERLINE + vocabulary.getVocabularyId() %>',
instanceVar: '<%= namespace + randomNamespace %>',
labelNode: '#<%= namespace %>assetCategoriesLabel_<%= vocabulary.getVocabularyId() %>',
maxEntries: <%= maxEntries %>,
moreResultsLabel: '<%= UnicodeLanguageUtil.get(resourceBundle, "load-more-results") %>',
portalModelResource: <%= Validator.isNotNull(className) && (ResourceActionsUtil.isPortalModelResource(className) || className.equals(Group.class.getName())) %>,
singleSelect: <%= !vocabulary.isMultiValued() %>,
title: '<%= UnicodeLanguageUtil.format(request, "select-x", vocabulary.getTitle(locale), false) %>',
vocabularyGroupIds: '<%= StringUtil.merge(groupIds) %>',
vocabularyIds: '<%= String.valueOf(vocabulary.getVocabularyId()) %>'

You should see the below screen once you have modify the JSPs.

Looking for Liferay Developer?

KTree is the best offshore Liferay development company with extensive experience in Liferay Portal Development services along with Upgrade & Migration. Hire Liferay developers or Liferay development services from LiferayDeveloper.

Request For Quote