활동이 없어 이 대화는 잠겼습니다. 새 게시물을 작성해 주세요.
활동이 없어 이 대화는 잠겼습니다. 새 게시물을 작성해 주세요.
Hi ,
I am trying to pass some custom parameters from my Sightly Component to Sling Model. But I am not able to read those passed parameters inside my Sling Model.
Below is my sightly code :
<sly data-sly-use.mySlingModal="${'com.adobe.website.models.ImageModel' @ colour='red', path=resource.path}"></sly>
How to read color and path in side my sling model java class.
Can you please help me in solving this.
해결되었습니다! 솔루션으로 이동.
Thank you all for responding. We have solved it as below.
@Model
({adaptables=Resource.
class, adaptables=SlingHttpServletRequest.class
)
So that at the same time I will get my resource/Node/Content properties and the values passed to my sling modal from my sightly component.
Have your slingmodel be adaptable from slinghttpservlet request.
Then add two properties (colour , path), with the @inject annotation.
I tried to use @Inject. But I am not able to use @Inject as I am using a different version. Apart form @Inject do we have any other annotation for reading the parameters passed?
조회 수
답글
좋아요 수
What do you mean? @ inject should be available..
Hi Eakambaram
I hope you have read this blog HTL introduction part 4 . Feike Visser has put across the details here. Please check the Sling Model Section and check if this is what you are looking for
Thanks
Veena
조회 수
답글
좋아요 수
We show use of HTL and Sling Models in this article -- Developing your first Experience Manager 6.3 Components
조회 수
답글
좋아요 수
Thank you all for responding. We have solved it as below.
@Model
({adaptables=Resource.
class, adaptables=SlingHttpServletRequest.class
)
So that at the same time I will get my resource/Node/Content properties and the values passed to my sling modal from my sightly component.
Hi Eakambaram:
I have the same issue, not sure if you can help me.
for @Model({adaptables=Resource.class, adaptables=SlingHttpServletRequest.class), where to close '}'. Can you share a little bit code snippet.
Appreicated.
Thanks
조회 수
답글
좋아요 수
Newer article that uses Sling Models and @ inject Creating a custom Touch UI Grid Component for Adobe Experience Manager
조회 수
답글
좋아요 수
Thank you.
However, these examples are too simple. Do you have some more examples, which adaptable resource, and inject the request? or can adaptable request and resource both?
조회 수
답글
좋아요 수
You adapt always from *one* class. In case you adapt from request, you have the resource too via the getResource()
조회 수
답글
좋아요 수
@Model({adaptables=Resource.class, adaptables=SlingHttpServletRequest.class}).
I was trying to pass some parameters/values from my sighlty html to my sling model, once we receive those parameters in our java we have some custom process requirement for those parameters and have to return some value found in repository to sighlty.
You can try the adaptables way. Another way is we can change our approach from sling model to wcmuse pojo way for this component alone.
Sighlty code snippet for passing some parameters (Those parameters are not authored by the author) from sightly component to Java/WCMUsePojo class
<sly data-sly-use.customPropReader="${'com.yourcompany.division.project.CustomPropReader' @ properties='prop1,prop2'}"></sly>
WCM use pojo Java code to read those parameters.
public class CustomPropReader extends WCMUsePojo {
/**
* custom biz logic applied value map
*/
private HashMap customProcessedProps;
@Override
public void activate() {
String property = get("properties", String.class) != null ? get("properties", String.class) : "";
String[] propertyList = property.split(",");
//We will get all values in propertyList string array. We can loop through those each value and apply custom logic
//One we got the results we can send them back to Sightly
customProcessedProps = new HashMap<String, String> ();
for (String property : propertyList) {
//apply custom logic to each property string and put that in map.
customProcessedProps.put(property, applyCustomBizLogic(property));
}
}
/**
* get ValueMap of inheritedPageProperties
*
* @return HashMap
*/
public HashMap getCustomProcessedProp() {
return customProcessedProps;
}
}
조회 수
답글
좋아요 수
Thanks.
Adobe recommends to use sling model instead of WCMUsePoJo. I was curious how to adaptable two classes in above examples.
조회 수
답글
좋아요 수
WCMUsePojo is a valid way if you prefer to use over Sling Models,
We can do with sling models as below:
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.Optional;
import org.apache.sling.models.annotations.injectorspecific.RequestAttribute;
@Model(adaptables = SlingHttpServletRequest.class)
public class TestModel {
@RequestAttribute
@Optional
private String test;
@PostConstruct
public void init() {
//we can read the values directly here.
}
}
<sly data-sly-use.mySlingModal="${'TestModel' @ test='red'}"></sly>
Here is HTL and Sling models -- Adobe Experience Manager Help | Creating a HTL Repeating Data Set 6.3 Component that uses Sling Mode...
Using this approach - as you see - very little Java code.
조회 수
답글
좋아요 수
Hi,
Correction in this for the curly braces: @Model(adaptables = {Resource.class, SlingHttpServletRequest.class})
조회 수
답글
좋아요 수