Fórumok

ServiceBuilder - adding search methods in a custom portlet

thumbnail
Armando Gallo, módosítva 13 év-val korábban

ServiceBuilder - adding search methods in a custom portlet

New Member Bejegyzések: 18 Csatlakozás dátuma: 2007.12.28. Legújabb bejegyzések
Hi,

i created an address-book portlet using service builder; In this portlet i can view,add,modify and delete records from my table but i don't know how to develop a search functionality within this portlet.

I checked administration portlet's code (users list) but i can't understand how to report it to my portlet.

I noticed that in the classes generated by service.xml there's no "search" method. In the wiki's section dedicated to servicebuilder i've seen a schema in which the XXXLocalService class has a search method.

Is this method automatically generated by servicebuilder? Maybe I must write something else in the service.xml

Instead, how can i add search functionality to my portlet ?

Thank you
Babu Janarthanan, módosítva 13 év-val korábban

RE: ServiceBuilder - adding search methods in a custom portlet

Regular Member Bejegyzések: 128 Csatlakozás dátuma: 2008.07.31. Legújabb bejegyzések
Hi,
which version of liferay you are using.

if you want to add search functionality, you can generate finder method using service.xml


<finder name="name" return-type="Collection">
<finder-column name="coulmnname" />
</finder>




Thx,
Babu
thumbnail
Armando Gallo, módosítva 13 év-val korábban

RE: ServiceBuilder - adding search methods in a custom portlet

New Member Bejegyzések: 18 Csatlakozás dátuma: 2007.12.28. Legújabb bejegyzések
Thanks Babu, I'm using LR 5.2.3 in ext environment

I successfully generated the code with finder tag. I see the "findByName" (more than one) method in AddressBookEntryUtil in 'persistence' package but how can i use it ?

Do i have to develop my search method in xxxlocalserviceutil in which i call findbyname?

Can you post a code for example?

probably, it's easier than it seems but i had no coffee this morning emoticon

Thank you
Babu Janarthanan, módosítva 13 év-val korábban

RE: ServiceBuilder - adding search methods in a custom portlet

Regular Member Bejegyzések: 128 Csatlakozás dátuma: 2008.07.31. Legújabb bejegyzések
you have to develop a method in your serviceimpl.java, and then access the util method.

assuming that you have given 2 columns in the finder tag.

public List getByName (String abc, String sample) throws PortalException, SystemException {
return AddressBookEntryUtil.findByName(abc, sample);
}

you can take a look @ portal source for more clarity.

Thx,
Babu
thumbnail
Armando Gallo, módosítva 13 év-val korábban

RE: ServiceBuilder - adding search methods in a custom portlet

New Member Bejegyzések: 18 Csatlakozás dátuma: 2007.12.28. Legújabb bejegyzések
Hi Babu,
thanks for your reply and example. I'm getting some errors when i call my method;

My code:

in AddressBookLocalServiceUtil.java


public static List<addressbookentry> getByName(String title) 
	throws PortalException, SystemException {
		return AddressBookEntryUtil.findByTitle(title);
	}
</addressbookentry>


and then in view_address.jsp:


List<addressbookentry> addresses = (List<addressbookentry>)AddressBookLocalServiceUtil.getByName("a string");
</addressbookentry></addressbookentry>


I'm getting this error:

Caused by: org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
	at com.liferay.portal.spring.hibernate.SessionFactoryInvocationHandler.invoke(SessionFactoryInvocationHandler.java:68)
	at $Proxy1.getCurrentSession(Unknown Source)
	at com.liferay.portal.dao.orm.hibernate.SessionFactoryImpl.openSession(SessionFactoryImpl.java:61)
	at com.liferay.portal.service.persistence.impl.BasePersistenceImpl.openSession(BasePersistenceImpl.java:70)
	at com.ext.portlet.addressbook.service.persistence.AddressBookEntryPersistenceImpl.findByTitle(AddressBookEntryPersistenceImpl.java:754)
	at com.ext.portlet.addressbook.service.persistence.AddressBookEntryUtil.findByTitle(AddressBookEntryUtil.java:147)
	at com.ext.portlet.addressbook.action.AddressBookLocalServiceUtil.getByName(AddressBookLocalServiceUtil.java:95)
	at org.apache.jsp.html.portlet.ext.address_005fbook.view_005faddress_jsp._jspService(view_005faddress_jsp.java:702)
.....
....
....
more and more

what's my fault?
thank you
Babu Janarthanan, módosítva 13 év-val korábban

RE: ServiceBuilder - adding search methods in a custom portlet

Regular Member Bejegyzések: 128 Csatlakozás dátuma: 2008.07.31. Legújabb bejegyzések
you should write your code in AddressBookLocalServiceImpl.java.

public static List<AddressBookEntry> getByName(String title)
throws PortalException, SystemException {
......
}
Navin Singh, módosítva 11 év-val korábban

RE: ServiceBuilder - adding search methods in a custom portlet

New Member Bejegyzések: 8 Csatlakozás dátuma: 2011.11.14. Legújabb bejegyzések
As per you guys' instructions, I was able to successfully implement search indexing and open search on my custom portlet. It indexes my portlet data when running re-index process. But I have problem now, when I try to search, it gives me an exception stating "Error displaying content of type liferay open search... ", any help will be really appreciated.