留言板
metódus hívás velocity-ből
Sziasztok!
Arra keresek választ, hogy hogyan tudnék egy web content velocity template-ben olyan linket/gombot kitenni, amire klikkelve meghívásra kerülne egy adott util, adott metódusa, paraméterezve?
Az már megvan, hogy adatok megjelenítéséhez miként tudok adatokat kérni egy util-tól (azaz a util-om lekérő és beállító metódusai is elvben elérhetők a velocity irányából).
Üdv.
Balázs
Arra keresek választ, hogy hogyan tudnék egy web content velocity template-ben olyan linket/gombot kitenni, amire klikkelve meghívásra kerülne egy adott util, adott metódusa, paraméterezve?
Az már megvan, hogy adatok megjelenítéséhez miként tudok adatokat kérni egy util-tól (azaz a util-om lekérő és beállító metódusai is elvben elérhetők a velocity irányából).
Üdv.
Balázs
Szia Balázs!
Web content template-ben minden további nélkül használhatóak az alábbi Liferay-es utility classok:
1) paramUtil
2) portalUtil
3) dateUtil
valamint
4) renderRequest, request
5) themeDisplay,
6) user objektumok
Például:
$groupId = $getterUtil.getLong($groupId)
Liferay belső / custom servicek hívása pedig a servicelocator segítségével történik:
#set ($journalArticleService =
$serviceLocator.findService('com.liferay.portlet.journal.service.JournalArticleLocalService'))
És a használata pedig:
##
## Get Job Posts
##
#set ($articles = $journalArticleService.getStructureArticles($groupId,$structureId))
Fontos, hogy a service locator alapesetben nem használható, engedélyezni kell az alábbi portal-ext.properties beállításokkal (újraindítás szükséges):
velocity.engine.restricted.classes=
velocity.engine.restricted.variables=
Arra ügyelj, hogy engedélyezés után bármilyek Liferay-es belső service (custom service) meghívható, ezért nagyon figyelj oda hogy web content szerkesztésre melyik usernek adsz jogosultságot.
Üdv,
Adorján
Web content template-ben minden további nélkül használhatóak az alábbi Liferay-es utility classok:
1) paramUtil
2) portalUtil
3) dateUtil
valamint
4) renderRequest, request
5) themeDisplay,
6) user objektumok
Például:
$groupId = $getterUtil.getLong($groupId)
Liferay belső / custom servicek hívása pedig a servicelocator segítségével történik:
#set ($journalArticleService =
$serviceLocator.findService('com.liferay.portlet.journal.service.JournalArticleLocalService'))
És a használata pedig:
##
## Get Job Posts
##
#set ($articles = $journalArticleService.getStructureArticles($groupId,$structureId))
Fontos, hogy a service locator alapesetben nem használható, engedélyezni kell az alábbi portal-ext.properties beállításokkal (újraindítás szükséges):
velocity.engine.restricted.classes=
velocity.engine.restricted.variables=
Arra ügyelj, hogy engedélyezés után bármilyek Liferay-es belső service (custom service) meghívható, ezért nagyon figyelj oda hogy web content szerkesztésre melyik usernek adsz jogosultságot.
Üdv,
Adorján
Szia!
Ezeken túl vagyok, mármint odáig eljutottam, hogy egy általam csinált osztály metódusa segítségével lekért dolgokat kiírjak.
Ami a kérdés lenne, hogy ha ennek az osztálynak van egy olyan metódusa, amivel valami állítok server oldalon (pl. felveszek egy rekordot egy táblába), akkor azt a metódust hogyan tudom meghívni, hogyan kell a linket összeállítani, stb?
Tehát mondjuk az alábbi módon érem el az osztályom:
#set($velocityRaptor = $serviceLocator.findService("bmp-liferay-portlet", "hu.fornax.bmp.common.helper.VelocityRaptor"))
Ennek tudok a $velocityRaptor.getEzMegAz() metódusával kiírni ezt, meg azt.
De tegyük fel, van egy addValamiToDB() metódusom, akkor hogyan tudok egy olyan gombot/linket csinálni, ami megnyomására meghívódik ez?
Ezeken túl vagyok, mármint odáig eljutottam, hogy egy általam csinált osztály metódusa segítségével lekért dolgokat kiírjak.
Ami a kérdés lenne, hogy ha ennek az osztálynak van egy olyan metódusa, amivel valami állítok server oldalon (pl. felveszek egy rekordot egy táblába), akkor azt a metódust hogyan tudom meghívni, hogyan kell a linket összeállítani, stb?
Tehát mondjuk az alábbi módon érem el az osztályom:
#set($velocityRaptor = $serviceLocator.findService("bmp-liferay-portlet", "hu.fornax.bmp.common.helper.VelocityRaptor"))
Ennek tudok a $velocityRaptor.getEzMegAz() metódusával kiírni ezt, meg azt.
De tegyük fel, van egy addValamiToDB() metódusom, akkor hogyan tudok egy olyan gombot/linket csinálni, ami megnyomására meghívódik ez?
Balázs Csönge,修改在8 年前。