Foren

Liferay DXP problems with assetEntryQuery

thumbnail
Jon Ander Gonzalez, geändert vor 6 Jahren.

Liferay DXP problems with assetEntryQuery

Junior Member Beiträge: 28 Beitrittsdatum: 30.05.17 Neueste Beiträge
hi guys,

i'm trying to do a query in freeMarker but its giving me an error in this line:

<#assign assetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/>


thre isn't too much information about the error.

com.liferay.portlet.asset.service.persistence.AssetEntryQuery

----
FTL stack trace ("~" means nesting-related):
freemarker.template.TemplateModelException: [... Exception message was already printed; see it above ...]
	at com.liferay.portal.template.freemarker.internal.LiferayObjectConstructor.exec(LiferayObjectConstructor.java:50)
	at freemarker.core.MethodCall._eval(MethodCall.java:62)
	at freemarker.core.Expression.eval(Expression.java:78)
	at freemarker.core.Assignment.accept(Assignment.java:131)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.MixedContent.accept(MixedContent.java:54)
	at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.Environment.process(Environment.java:302)
	at freemarker.template.Template.process(Template.java:325)
	at com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:135)
	at com.liferay.portal.template.AbstractSingleResourceTemplate.doProcessTemplate(AbstractSingleResourceTemplate.java:67)
	at com.liferay.portal.template.AbstractTemplate.write(AbstractTemplate.java:175)
	at com.liferay.portal.template.AbstractSingleResourceTemplate.processTemplate(AbstractSingleResourceTemplate.java:90)
	at com.liferay.portal.template.RestrictedTemplate.processTemplate(RestrictedTemplate.java:97)
	at com.liferay.portal.templateparser.Transformer.mergeTemplate(Transformer.java:243)

thanks in advanced
thumbnail
David H Nebinger, geändert vor 6 Jahren.

RE: Liferay DXP problems with assetEntryQuery

Liferay Legend Beiträge: 14914 Beitrittsdatum: 02.09.06 Neueste Beiträge
I had a similar issue that I couldn't figure out myself.

I created a custom service that I could invoke from the FM template and pass in the values I wanted, then the custom service would create the instance and populate the AEQ value, then return it.

That way the FM template could use the value.








Come meet me at the 2017 LSNA!
thumbnail
Jon Ander Gonzalez, geändert vor 6 Jahren.

RE: Liferay DXP problems with assetEntryQuery

Junior Member Beiträge: 28 Beitrittsdatum: 30.05.17 Neueste Beiträge
hi David,

i guessed that could be an option to create my own service. but i wanted to know if there is a way to do only using FM because in the 6.2 i could do it. Thanks you, i wil try to do it as you have told me.
thumbnail
Jon Ander Gonzalez, geändert vor 6 Jahren.

RE: Liferay DXP problems with assetEntryQuery (Antwort)

Junior Member Beiträge: 28 Beitrittsdatum: 30.05.17 Neueste Beiträge
hi guys,

i did like David told me. here i let you my solution

i added in the xxxLocalServiceImpl this method
public AssetEntryQuery getAssetEntryQueryInstance() throws SystemException {        
    	
    	AssetEntryQuery entryQuery = new AssetEntryQuery();
		return entryQuery;
   	}


and in the template (FreeMarker)

<#assign aels= serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
<#assign topViewedLocalService= serviceLocator.findService("net.zylk..topViewed.service.TopViewedLocalService")/>

<#assign assetEntryQuery= topViewedLocalService.getAssetEntryQueryInstance()/>
                 <#assign VOID=assetEntryQuery.setClassName("com.liferay.blogs.kernel.model.BlogsEntry")/>
		<#assign VOID= assetEntryQuery.setStart(0)/>
		<#assign VOID= assetEntryQuery.setEnd(3)/>
		<#assign VOID= assetEntryQuery.setExcludeZeroViewCount(true)/>
		<#assign VOID= assetEntryQuery.setOrderByCol1("viewCount")/>
		<#assign VOID= assetEntryQuery.setOrderByType1("DESC")/>
  
  <#assign blogEntries= aels.getEntries(assetEntryQuery) />
 
    <#list blogEntries as blog>
        ${blog.getTitle(locale)}: ${blog.getViewCount()} 
    <!--#list-->


i hope it will be useful to somebody.
thumbnail
David H Nebinger, geändert vor 6 Jahren.

RE: Liferay DXP problems with assetEntryQuery

Liferay Legend Beiträge: 14914 Beitrittsdatum: 02.09.06 Neueste Beiträge
So I will usually take it one step further and create a full method like:

public AssetEntryQuery getAssetEntryQueryInstance(String className, int start, int end, 
    boolean execZeroViewCount, String orderByCol, String orderByType)


Or even:

public List<blogentry> getBlogEntries(String className, int start, int end, 
    boolean execZeroViewCount, String orderByCol, String orderByType)</blogentry>


Not because I don't like doing things like this in FM, but more because I can do things inside the service layer that aren't possible/practical in the FM scripts, namely logging and debugging.

Not everyone agrees, though, so everyone has to go with how much they feel comfortable.








Come meet me at the 2017 LSNA!