Java D Java D - 6 months ago 142
MySQL Question

how to insert data in db using liferay portlet

How to insert data in MySql using Liferay?

I have created Edit.jsp, view.jsp from edit.jsp I want to enter data and in view.jsp I want to show my data. This data which is enter in edit.jsp should be stored in my mysql table. I have created service.xml, portal-ext.properties.

I have java file also. Please tell me where should I write my insertion logic to store my data in to database.

Here is my Java code. I have edit.jsp file and view.jsp file, i have created table using service.xml file and I put my portal-ext.properties in classes folder. Is any thing missing? I am new in liferay

package com.portlet;

import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portlet.model.testimonial;
import com.liferay.portlet.service.testimonialLocalServiceUtil;

public class Testimonial extends GenericPortlet {

protected String editJSP;
protected String viewJSP;
private static Log _log = LogFactory.getLog(Testimonial.class);

public void init() throws PortletException
{
editJSP = getInitParameter("edit-jsp");
viewJSP = getInitParameter("view-jsp");
}

public void doEdit(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException
{
renderResponse.setContentType("text/html");
PortletURL addNameURL = renderResponse.createActionURL();
addNameURL.setParameter("addName", "addName");
renderRequest.setAttribute("addNameURL", addNameURL.toString());
include(editJSP, renderRequest, renderResponse);
}

public void doView(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException
{
PortletPreferences prefs = renderRequest.getPreferences();
String username = (String) prefs.getValue("name", "");
String area=(String)prefs.getValue("area", "testimonial");
String email=(String)prefs.getValue("email", "");
String subject=(String)prefs.getValue("subject", "");
String company=(String)prefs.getValue("company", "");
String designation=(String)prefs.getValue("designation", "");

if (username.equalsIgnoreCase (""))
{
username = "";
}

renderRequest.setAttribute("userName", username);
renderRequest.setAttribute("area",area);
renderRequest.setAttribute("email",email);
renderRequest.setAttribute("subject",subject);
renderRequest.setAttribute("designation",designation);
renderRequest.setAttribute("company",company);

include(viewJSP, renderRequest, renderResponse);
}

public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException
{
String addName = actionRequest.getParameter("addName");

if (addName != null)
{
PortletPreferences prefs = actionRequest.getPreferences();
prefs.setValue("name", actionRequest.getParameter("username"));
prefs.setValue("area",actionRequest.getParameter("area"));
prefs.setValue("email",actionRequest.getParameter("email"));
prefs.setValue("subject",actionRequest.getParameter("subject"));
prefs.setValue("designation",actionRequest.getParameter("designation"));
prefs.setValue("company",actionRequest.getParameter("company"));

prefs.store();

testimonial testimonial = null;

try {
testimonialLocalServiceUtil.createtestimonial(CounterLocalServiceUtil.increment());
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

testimonial.setSubject(actionRequest.getParameter("subject"));
testimonial.setArea(actionRequest.getParameter("area"));
testimonial.setUsername(actionRequest.getParameter("username"));
testimonial.setEmail(actionRequest.getParameter("email"));
testimonial.setCompany(actionRequest.getParameter("company"));
testimonial.setDesignation(actionRequest.getParameter("designation"));

try {
testimonialLocalServiceUtil.addtestimonial(testimonial);
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

actionResponse.setPortletMode(PortletMode.VIEW);
}
}

protected void include(String path, RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException
{
PortletRequestDispatcher portletRequestDispatcher = getPortletContext().getRequestDispatcher(path);

if (portletRequestDispatcher == null)
{
_log.error(path + " is not a valid include");
}
else
{
portletRequestDispatcher.include(renderRequest, renderResponse);
}
}
}

Answer

You have to use either Liferay default API for accessing and inserting data in default Liferay tables or if you want to access/insert in Custom(self-made) tables in Database, then you have to use Liferay Service Builder.

In your question - you can create your tables manually in database first.

Then you can make service.xml and build the service using the ant build file which will give you the LocalServiceUtil classes. In your case it is testimonialLocalServiceUtil class.

Also as per your code, the processAction method overriding is correct.

Please check the table and columns specifications in service.xml. It should not have any problem.

Here is a link which may help you -

http://www.phloxblog.in/liferay-service-builder-step-step/

And, if you get any exception, please share those to us, so that we can understand the problem area.

Thanks

Comments