SlingHttpServletRequest request value is null while Injecting SlingHttpServletRequest to the sling model adaptable to Resource and SlingHttpServletRequest.

Avatar

Avatar

manasip

Avatar

manasip

manasip

11-05-2018

@Model(adaptables = {Resource.class, SlingHttpServletRequest.class}, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL, resourceType = "reactaem/components/content/my-title")

@Exporter(name = "jackson", extensions = "json")

public class MyTitleModel {

private final Logger logger = LoggerFactory.getLogger(getClass());

@Inject

private String title;

@Inject

private String text;

@Inject

SlingHttpServletRequest slingRequest;

@PostConstruct

    public void init() {

if (slingRequest != null) {

String url = slingRequest.getRequestPathInfo().getResourcePath() ;

logger.info("URL=" + url);

}

else {

logger.info("SlingHttpServletRequest is null*****");

}

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

}

Replies

Avatar

Avatar

Vijayalakshmi_S

MVP

Avatar

Vijayalakshmi_S

MVP

Vijayalakshmi_S
MVP

11-05-2018

Hi,

When the adaptable itself needs to be injected, we need to use an annotation named "@Self" along with "@Inject".

In this case, add self annotation to SlingHttpServletRequest.

See if it works with this.

Reference:

Apache Sling :: Sling Models

Avatar

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Reply

2.3K

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Reply

2.3K
smacdonald2008

11-05-2018

See this article - it will point you in the right direction -- Scott's Digital Community: Performing Sling Model Adaptation Using Request and Resource Objects

Avatar

Avatar

navinkaushal

Avatar

navinkaushal

navinkaushal

11-05-2018

Avatar

Avatar

manasip

Avatar

manasip

manasip

11-05-2018

I am developing on AEM 6.3

I have already tried:

@Self

@Inject

private SlingHttpServletRequest slingRequest;

and

@SlingObject

private SlingHttpServletRequest slingRequest;

Any other way to get the SlingHttpServletRequest object?

Avatar

Avatar

sharathe9008234

Avatar

sharathe9008234

sharathe9008234

15-05-2019

Hi,
Is this issue resolved ?

I am also facing similar issue while exporting columnCotrol component.

Thanks!

Sharath

Avatar

Avatar

rajesh0926

Avatar

rajesh0926

rajesh0926

30-03-2020

Seems to be order of the adaptables does matter here

adaptables = {SlingHttpServletRequest.class, Resource.class }

Having sling request first in the list is solving the issue for me

Avatar

Avatar

carolinaguedes

Avatar

carolinaguedes

carolinaguedes

25-04-2020

hey, having the same problem. Any solution? Thank you