Liferay
Portlet Filter in Liferay 7.2

Bhargav Vaghasiya•Dec 8, 2020
Introduction
The portlet filter is similar to the servlet filter. It executes some logic before and after executing the portlet. Portlet filter is mostly used for the below things.
- Transform content
- Add or modify request and response attributes
- Suspend a portlet phase to get user input
- Audit portlet activity
1) Create a module project.
- Go to Liferay workspace project → modules → new.
- Select other → Liferay → Liferay Module Project and Click on “Next”.
- Enter the project name.
- Select “Project Template Name” as “mvc-portlet” and click on “Next”.

Enter the package name and click on “Finish”. The necessary file structure will be created as below.

2) Implement a RenderFilter in your portlet class.
1// PortletFilter.java
2package com.ignek.portal.portlet.filter;
3
4@Component(
5 immediate = true,
6 property = {
7 "javax.portlet.name= com_ignek_portal_portlet_PortletFilter",
8 "service.ranking:Integer=1"
9 },
10 service = PortletFilter.class
11)
12
13public class PortletFilter implements RenderFilter {
14
15 @Override
16 public void init(FilterConfig filterConfig) throws PortletException {
17 log.info("-----------------init method called------------");
18 }
19 @Override
20 public void destroy() {
21 log.info("------------destroy method called----------------");
22 }
23 @Override
24 public void doFilter(RenderRequest request, RenderResponse response, FilterChain chain)
25 throws IOException, PortletException {
26 log.info("----------doFilter method called---------------");
27 }
28
29 private Log log = LogFactoryUtil.getLog(PortletFilter.class);
30}Javax.portlet.name : It links the portlet class with the filter class.
service.ranking:Integer : Many times we need to create too many filters, that time we can use service.ranking: Integer. It is useful to execute filters on a priority basis.