In liferay portal if we want to find records from table then we need finder methods. To create finder method we need to specify the finder tag in the service.xml file.
Assume that we have a database table named customer having fields like name, city, age etc. We want to find all the customers belonging to a particular city.
Following are the steps to create finder method for the above requirement-
1. In the service.xml file add the following line after database columns declarations,
<finder name="City" return-type="Collection">
<finder-column name="city"></finder-column>
</finder>
Name – method name , a method named findByCity will be generated
Collection – return type
Finder column name – name of the corresponding column in the customer table
2. Run the ant target "ant build-service". In the SampleUtil.java you will find the following method –
public static java.util.List<com.sample.model.Sample> findByCity(
java.lang.String city) throws com.liferay.portal.SystemException {
return getPersistence().findByCity(city);
}
3. Copy the finder method from this class and paste it inside the SampleLocalServiceImpl class and modify the method definition as following
- Remove the static modifier
- Replace getPersistence() with SampleUtil.
4. Run the target "ant build-service" again. After build finder will be available in your SampleLocalServiceUtil class.
List<Sample> customerList = SampleLocalServiceUtil.findByCity("cityname");
NOTE: Replace Sample with your EntityName.
Thursday, June 9, 2011
Saturday, June 4, 2011
Adding a Plugin Portlet to Liferay Control Panel
Sometimes situations arises when we want to add our custom made plugin portlet to Liferay Control Panel.
To do so we need to made some entries in liferay-portlet.xml . These are as follows-
1. control-panel-entry-category: It spefies the 'category' where your portlet will appear.
2. control-panel-entry-weight: weight determines the position among the other portlet listed in that category.
3. control-panel-entry-class: The name of a class that implements the ControlPanelEntry interface.
It’s not necessary to specify the class but depends on our requirement.
Here is an example-
<control-panel-entry-category>content</control-panel-entry-category>
<control-panel-entry-weight>100</control-panel-entry-weight>
NOTE- Make sure you provide a unique weight for your plugin portlet otherwise any liferay out of the box portlet with the same weight will override your portlet.
To do so we need to made some entries in liferay-portlet.xml . These are as follows-
1. control-panel-entry-category: It spefies the 'category' where your portlet will appear.
2. control-panel-entry-weight: weight determines the position among the other portlet listed in that category.
3. control-panel-entry-class: The name of a class that implements the ControlPanelEntry interface.
It’s not necessary to specify the class but depends on our requirement.
Here is an example-
<control-panel-entry-category>content</control-panel-entry-category>
<control-panel-entry-weight>100</control-panel-entry-weight>
NOTE- Make sure you provide a unique weight for your plugin portlet otherwise any liferay out of the box portlet with the same weight will override your portlet.
Wednesday, May 11, 2011
Adding language selection portlet to the Dockbar using custom jsp hook plugin
The Liferay Language portlet provide an option to select from different localizations. It’s a common requirement in web application to display language selection option as flags in the header area.
In Liferay we can accomplish this through hook plugin as following:
1. Create a Liferay hook plugin project create sample-hook "Sample Dockbar Hook"
2. In the /docroot/WEB-INF/ folder open liferay-hook.xml file and add the following entry
<hook>
<custom-jsp-dir>/WEB-INF/jsps</custom-jsp-dir>
</hook>
3. Copy ${PORTAL_ROOT_HOME}htmlportletdockbarview.jsp to ${liferay.plugins.sdk}sample-hookdocrootWEB-INFjspshtmlportletdockbar folder.
4. Add the following code after Toggle Edit Control
<liferay-ui:language displayStyle="0" languageIds='<%= new string[] {"en_US","nl_NL"} %>' />
This will add English and Dutch Language to the dockbar.
5. Build and package the hook WAR file and deploy it on your Liferay server.
In Liferay we can accomplish this through hook plugin as following:
1. Create a Liferay hook plugin project create sample-hook "Sample Dockbar Hook"
2. In the /docroot/WEB-INF/ folder open liferay-hook.xml file and add the following entry
<hook>
<custom-jsp-dir>/WEB-INF/jsps</custom-jsp-dir>
</hook>
3. Copy ${PORTAL_ROOT_HOME}htmlportletdockbarview.jsp to ${liferay.plugins.sdk}sample-hookdocrootWEB-INFjspshtmlportletdockbar folder.
4. Add the following code after Toggle Edit Control
<liferay-ui:language displayStyle="0" languageIds='<%= new string[] {"en_US","nl_NL"} %>' />
This will add English and Dutch Language to the dockbar.
5. Build and package the hook WAR file and deploy it on your Liferay server.
Friday, May 6, 2011
Adding Portlet Preferences to Custom Portlet
The portlet preferences are intended to store basic configuration data for portlets. The PortletPreferences interface allows the portlet to store configuration data, not to replace the general-purpose databases.
Normally, there are two different types of preferences: Modifiable and Read Only.
Modifiable preferences can be changed by the portlet in any standard portlet mode (for example, EDIT, HELP, and VIEW). While Read-Only preferences cannot be changed by the portlet in any standard portlet mode, they may be changed by administrative modes.
By default, preference is modifiable.
Following are the steps to add portlet preferences (configurations) to custom portlet:
1. Add a configuration.jsp file:
2. Create an ConfigurationActionImpl class :
3. Made an entry in liferay-portlet.xml file:
<configuration-action-class>ConfigurationActionImpl</configuration-action-class>
4. Just Fetch and use the preferences:
5.Adding Preferences Default Value to Portlet.xml:
In this way you can add any configuration options to the portlet and persist them portlet preferences.
If you have any questions or query, Please comment.....
Normally, there are two different types of preferences: Modifiable and Read Only.
Modifiable preferences can be changed by the portlet in any standard portlet mode (for example, EDIT, HELP, and VIEW). While Read-Only preferences cannot be changed by the portlet in any standard portlet mode, they may be changed by administrative modes.
By default, preference is modifiable.
Following are the steps to add portlet preferences (configurations) to custom portlet:
1. Add a configuration.jsp file:
2. Create an ConfigurationActionImpl class :
3. Made an entry in liferay-portlet.xml file:
<configuration-action-class>ConfigurationActionImpl</configuration-action-class>
4. Just Fetch and use the preferences:
5.Adding Preferences Default Value to Portlet.xml:
In this way you can add any configuration options to the portlet and persist them portlet preferences.
If you have any questions or query, Please comment.....
Friday, April 29, 2011
Suppressing Default Success Message
Each time user request is processed successfully Liferay Portal display the following message-
“Your request has been processed successfully”
To remove this message Add an entry to portlet.xml file:
<add-process-action-success-action >
false
</add-process-action-success-action >
“Your request has been processed successfully”
To remove this message Add an entry to portlet.xml file:
<add-process-action-success-action >
false
</add-process-action-success-action >
Wednesday, April 27, 2011
Removing Portlet Permission Error Message
If any user don’t have permission to access a portlet, Liferay Portal display the following permission error message
"you don't have required permission to access this portlet"
Instead of displaying the error message we can make that portlet invisible for that particular user by setting the following property in portal-ext.properties file –
layout.show.portlet.access.denied=false
"you don't have required permission to access this portlet"
Instead of displaying the error message we can make that portlet invisible for that particular user by setting the following property in portal-ext.properties file –
layout.show.portlet.access.denied=false
Saturday, April 9, 2011
Display Journal Articles based on Tags
1. Have a long[] array containing Tag Ids for which you want to serach Journal Articles
long[] tagIds = {tagId1,tagId2,…..};
2. Create an AssetEntryQuery and set the tagIds as the criteria
AssetEntryQuery assetEntryQuery = new AssetEntryQuery();
assetEntryQuery.setAllTagIds(tagIds);
3. Call the getEntries(AssetEntryQuery ob) method on AssetEntryLocalServiceUtil class to get the list of assetEntries
ListentryList = new ArrayList();
try {
entryList = AssetEntryLocalServiceUtil.getEntries(assetEntryQuery);
} catch (SystemException e) {
e.printStackTrace();
}
4. Now iterate the list and pick classPK attribute for each entry and from that query JournalArticle Table for corresponding articleId.
long[] tagIds = {tagId1,tagId2,…..};
2. Create an AssetEntryQuery and set the tagIds as the criteria
AssetEntryQuery assetEntryQuery = new AssetEntryQuery();
assetEntryQuery.setAllTagIds(tagIds);
3. Call the getEntries(AssetEntryQuery ob) method on AssetEntryLocalServiceUtil class to get the list of assetEntries
ListentryList = new ArrayList();
try {
entryList = AssetEntryLocalServiceUtil.getEntries(assetEntryQuery);
} catch (SystemException e) {
e.printStackTrace();
}
4. Now iterate the list and pick classPK attribute for each entry and from that query JournalArticle Table for corresponding articleId.
Subscribe to:
Posts (Atom)