Lägga till en användningsklass
Komponenten info
som den ser ut behöver ingen use-klass för att utföra sin enkla funktion. Det finns fall där du behöver göra saker som inte kan göras i HTML och där du behöver en användningsklass. Tänk på följande:
Anta till exempel att du vill att komponenten info
ska visa egenskaperna title
och description
för resursen, men alla med gemener. Eftersom HTML inte har någon metod för att sänka radering av strängar kan du lägga till en Java-användarklass och ändra /apps/my-example/component/info/info.html
enligt följande:
<div data-sly-use.info="Info">
<h1>${info.lowerCaseTitle}</h1>
<p>${info.lowerCaseDescription}</p>
</div>
Dessutom skapas /apps/my-example/component/info/Info.java
.
package apps.my_example.components.info;
import com.adobe.cq.sightly.WCMUsePojo;
public class Info extends WCMUsePojo {
private String lowerCaseTitle;
private String lowerCaseDescription;
@Override
public void activate() throws Exception {
lowerCaseTitle = getProperties().get("title", "").toLowerCase();
lowerCaseDescription = getProperties().get("description", "").toLowerCase();
}
public String getLowerCaseTitle() {
return lowerCaseTitle;
}
public String getLowerCaseDescription() {
return lowerCaseDescription;
}
}
Mer information finns i Java-dokumenten för com.adobe.cq.sightly.WCMUsePojo
.
Nu ska vi titta på de olika delarna av koden.
Java-klass, lokal kontra bunt
Java-klassen kan installeras på två sätt:
- Lokal - I en lokal installation placeras Java-källfilen bredvid HTML-filen i samma databasmapp. Källan kompileras automatiskt vid behov. Inget separat kompilerings- eller paketeringssteg krävs.
- Paket - I en paketinstallation måste Java-klassen kompileras och distribueras i ett OSGi-paket med AEM standardmetod för paketdistribution (se avsnittet Paketerad Java-klass).
Om du vill veta vilken metod du ska använda när bör du tänka på följande två saker:
- En lokal Java use-class rekommenderas när use-klassen är specifik för den aktuella komponenten.
- En Java-användarklass som ingår i paketet rekommenderas när Java-koden implementerar en tjänst som är tillgänglig från flera HTML-komponenter.
I det här exemplet används en lokal installation.
Java-paketet är en databassökväg
När du använder en lokal installation måste paketnamnet för use-klassen matcha databasmappens plats. Understreck i paketnamnet ersätter eventuella bindestreck i sökvägen.
I det här fallet finns Info.java
på /apps/my-example/components/info
så paketet är apps.my_example.components.info
:
package apps.my_example.components.info;
import com.adobe.cq.sightly.WCMUsePojo;
public class Info extends WCMUsePojo {
...
}