Documentation

CDI Portlet Predefined Beans

Liferay DXP provides injectable portlet artifacts for CDI called Portlet Predefined Beans, as specified by JSR 362. There are two types of predefined beans:

The table below describes these attributes for each bean:

Artifact: The bean’s type.

Bean EL Name: Expression Language (EL) name for accessing the bean in a JSP or JSF page.

Qualifier: Annotation applied to the bean for defining and selecting a bean implementation.

Valid during (phase): The portlet phases in which the bean is valid.

Portlet Request Scoped Beans

These beans have the @PortletRequestScoped annotation. Here are their artifact types, bean EL names, and annotation qualifiers, along with their valid portlet phases.

Table 1: Portlet Request Scoped Beans1

Artifact

Bean EL Name

Qualifier

Valid during

PortletConfig

portletConfig

-

all

PortletRequest

portletRequest

-

all

PortletResponse

portletResponse

-

all

ActionRequest

actionRequest

-

action

ActionResponse

actionResponse

-

action

HeaderRequest

headerRequest

-

header

HeaderResponse

headerResponse

-

header

RenderRequest

renderRequest

-

render

RenderResponse

renderResponse

-

render

EventRequest

eventRequest

-

event

EventResponse

eventResponse

-

event

ResourceRequest

resourceRequest

-

resource

ResourceResponse

resourceResponse

-

resource

StateAwareResponse

stateAwareResponse

-

action, event

MimeResponse

mimeResponse

-

header, render, resource

ClientDataRequest

clientDataRequest

-

action, resource

RenderParameters

renderParams

-

all

MutableRenderParameters

mutableRenderParams

-

action, event

ActionParameters

actionParams

-

action

ResourceParameters

resourceParams

-

resource

PortletContext

portletContext

-

all

PortletMode

portletMode

-

all

WindowState

windowState

-

all

PortletPreferences

portletPreferences

-

all

Cookies(List<Cookie>)

cookies

-

all

PortletSession

portletSession

-

all

Locales(List<Locale>)

locales

-

all

Dependent Scoped Beans

These beans use the @Dependent scope. They’re of type java.lang.String, which is final. This disqualifies them from being proxied. To prevent using dependent scoped beans in a scope broader than their original scope, you should only inject them into @PortletRequestScoped beans.

Table 2: Dependent Scoped Beans2

Artifact

Bean EL Name

Qualifier

Valid during

Namespace (String)

namespace

@Namespace

all

ContextPath (String)

contextPath

@ContextPath

all

WindowID (String)

windowId

@WindowId

all

Portlet name (String)

portletName

@PortletName

all

Additional Information

CDI Dependency Injection


1

Martin Scott Nicklous, Java™ Portlet Specification 3.0, page 122.

2

Martin Scott Nicklous, Java™ Portlet Specification 3.0, page 123.