In Liferay-portlet.xml we need to specify the configuration action class.
add the below code<portlet> <portlet-name>Portletname</portlet-name> <icon>/icon.png</icon> <configuration-action-class> com.liferay.config.ConfigurationActionImpl </configuration-action-class> ...... ...... </portlet>create ConfigurationActionImpl.java file in the com.liferay.. package.
aad the below codepackage com.liferay.config; import com.liferay.portal.kernel.portlet.ConfigurationAction; import com.liferay.portal.kernel.servlet.SessionMessages; import com.liferay.portal.kernel.util.Constants; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portlet.PortletPreferencesFactoryUtil; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletConfig; import javax.portlet.PortletPreferences; import javax.portlet.PortletSession; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; /** * <a href="ConfigurationActionImpl.java.html"><b><i>View Source</i></b></a> * * @author Mark Wong * */ public class ConfigurationActionImpl implements ConfigurationAction { public void processAction(PortletConfig portletConfig, ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { String cmd = ParamUtil.getString(actionRequest, Constants.CMD); if (!cmd.equals(Constants.UPDATE)) { return; } String email = ParamUtil.getString(actionRequest, "email"); String subject = ParamUtil.getString(actionRequest, "subject"); String portletResource = ParamUtil.getString(actionRequest,"portletResource"); PortletPreferences preferences = PortletPreferencesFactoryUtil.getPortletSetup(actionRequest, portletResource); preferences.setValue("email", email); preferences.setValue("subject", subject); preferences.store(); PortletSession portletSession = actionRequest.getPortletSession(); SessionMessages.add(actionRequest, portletConfig.getPortletName()+ ".doConfigure"); } public String render(PortletConfig portletConfig, RenderRequest renderRequest, RenderResponse renderResponse) throws Exception { return "/html/config.jsp"; } }Create file Config.jsp in html folder
add the below code<%@include file="/html/init.jsp" %> <form action="<liferay-portlet:actionURL portletConfiguration="true" />" method="post" name="<portlet:namespace />fm"> <input name="<portlet:namespace /><%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" /> <table class="lfr-table"> <tr> <td>Email</td> <td><input type="text" name="<portlet:namespace />email" value="<%=email %>"/> </td> <td>Subject</td> <td><input type="text" name="<portlet:namespace />subject" value="<%=subject %>" /> </td> </tr> <tr> <td colspan="2"> <input type="button" value="<liferay-ui:message key="save" />" onClick="submitForm(document.<portlet:namespace />fm);" /> </td> </tr> </table> </form>create init.jsp file in htmlfolder add the below code
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %> <%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %> <%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %> <%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %> <%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %> <%@ taglib uri="http://liferay.com/tld/util" prefix="liferay-util" %> <%@ page import="com.liferay.portal.kernel.util.Constants" %> <%@ page import="com.liferay.portal.kernel.util.GetterUtil" %> <%@ page import="com.liferay.portal.kernel.util.ParamUtil" %> <%@ page import="com.liferay.portal.kernel.util.StringPool" %> <%@ page import="com.liferay.portal.util.PortalUtil" %> <%@ page import="com.liferay.portlet.PortletPreferencesFactoryUtil" %> <%@ page import="javax.portlet.PortletPreferences" %> <%@ page import="javax.portlet.WindowState" %> <%@ page import="javax.portlet.PortletURL"%> <%@ page import="javax.portlet.ActionRequest" %> <%@ page import="javax.portlet.PortletPreferences" %> <%@ page import="com.liferay.portal.kernel.language.LanguageUtil" %> <%@ page import="com.liferay.portal.security.permission.ActionKeys"%> <liferay-theme:defineObjects /> <portlet:defineObjects /> <% String currentURL = PortalUtil.getCurrentURL(request); PortletPreferences preferences = renderRequest.getPreferences(); String portletResource = ParamUtil.getString(request, "portletResource"); if (Validator.isNotNull(portletResource)) { preferences = PortletPreferencesFactoryUtil.getPortletSetup(request, portletResource); } String email = preferences.getValue("email", StringPool.BLANK); String subject = preferences.getValue("subject", StringPool.BLANK); %>Craete view.jsp file to display the configuration value use the below code
<%@include file="/html/init.jsp" %> <%=email %> <%=subject %>
Comments on: "Configuration the portlet in liferay using portletPreference" (10)
HI
Thanks for your excellent posting. I was looking for this one. I am very much glad to you.
Regards
Rony.
Hello,
is needed in the init.jsp
Hi Chilokan,
To avoid the redundancy of the code i am using init.jsp file,
its not mandatory, but for good practice i am suggesting go for init.jsp file.
Thanks and Regards,
Rajeeva Lochana.B.R
Thank for the post..
I have doubt can u please tell y do we actually use preference portlet??
Hi Nisha,
Actually the portlet preferences which we set value run-time or static, which will be constant throughout the portlet.
for more info check this link
Thanks for the post..when i am deploying this portlet error is comming like com.test.ConfigurationActionImpl cannot be cast to javax.portlet.Portlet
Hi Sasmita,
Check this link.
http://www.liferay.com/web/guest/community/forums/-/message_boards/message/101660#_19_message_101660
It is nice post!
But i want to change name of the tab Like “Setup” to “Config”.
Can you please guide me ?
Hi Vipul,
Add the below languages key in your custom portlet Language.properties file.
setup=Config
thanks for this post. It was very helpful. 🙂