Reputation: 434
I want to retrieve data from and insert data in mysql.
I m providing 3 file one java file and two jsp file edit.jsp
and view.jsp
to edit and view the data respectively.
I have created table using ServiceBuilder
, I have put my portal-ext.properties
in classes folder, tell me is this the perfect method? m I doing it the correct way?
I want to first insert data and then I want to retrieve data from database.
I m inserting data through the following jsp file - edit.jsp
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<jsp:useBean class="java.lang.String" id="addNameURL" scope="request" />
<jsp:useBean class="java.lang.String" id="area" scope="request"/>
<jsp:useBean class="java.lang.String" id="email" scope="request"/>
<jsp:useBean class="java.lang.String" id="subject" scope="request"/>
<jsp:useBean class="java.lang.String" id="compnay" scope="request"/>
<jsp:useBean class="java.lang.String" id="designation" scope="request"/>
<portlet:defineObjects />
<form id="<portlet:namespace />helloForm" action="<%= addNameURL %>"method="post">
<table>
<tr>
<td>Subject:</td>
<td><input type="text" name="subject"></td>
</tr>
<tr>
<td>
Write Your Testimonial
</td>
<td><textarea name ="area"></textarea>
</td>
</tr>
<tr>
<td>Name:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Company:</td>
<td><input type="text" name="company"></td>
</tr>
<tr>
<td>Designation:</td>
<td><input type="text" name="designation"></td>
</tr>
</table>
<input type="submit" id="nameButton" title="Submit" value="Submit">
</form>
I have written my insertion logic in following java file - Testimonial1
:
package com.liferay.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 Testimonial1 extends GenericPortlet {
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());
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"));
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);
}
}
protected String editJSP;
protected String viewJSP;
private static Log _log = LogFactory.getLog(Testimonial1.class);
}
I have written my view logic in following file - view.jsp
and I want to retrive data from database in following file:
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<jsp:useBean id="subject" class="java.lang.String" scope="request"/>
<jsp:useBean id="area" class="java.lang.String" scope="request"/>
<jsp:useBean id="userName" class="java.lang.String" scope="request" />
<jsp:useBean id="email" class="java.lang.String" scope="request"/>
<jsp:useBean id="company" class="java.lang.String" scope="request"/>
<jsp:useBean id="designation" class="java.lang.String" scope="request"/>
<portlet:defineObjects />
<p>This is the Testimonial portlet......... how are u all ..........</p>
<p>Subject is ....<%=subject %></p>
<p>Testimonial is .....<%=area %></p>
<p>Hello <%= userName %>!</p>
<p>your Email ......<%=email %></p>
<p>your company .....<%=company %></p>
<p>You are .......<%=designation %></p>
My service.xml
file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.1.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_1_0.dtd">
<service-builder package-path="com.liferay.portlet">
<author>ubuntu</author>
<namespace>perception</namespace>
<entity name="testimonial" local-service="true" remote-service="true">
<column name="subject" type="String"></column>
<column name="area" type="String"></column>
<column name="username" type="String"></column>
<column name="email" type="String"></column>
<column name="company" type="String"></column>
<column name="designation" type="String"></column>
</entity>
</service-builder>
My portal-ext.properties
file:
#
# MySQL
#
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEn
coding=UTF-8&useFastDateParsing=false
jdbc.default.username=root
jdbc.default.password=ubuntu123
schema.run.enabled=true
schema.run.minimal=true
I have put all my files, now please tell me what I have to do for data insertion and retrieval.
Pls tell am I right in insertion code? and how to retrive data from database?
Upvotes: 0
Views: 4075
Reputation: 48077
This is rather a comment, but too long for that format - thus I'm adding it as an answer.
As far as I can see there's a major flaw with your code, not related to the underlying question: You're using the portlet VIEW mode to show the data and the EDIT mode to manipulate it. This is a common misunderstanding of JSR-286, and I learned to hate this naming.
EDIT is meant to configure the current portlet - when the result of an EDIT operation is a change in a single database record, you almost always have used the wrong portlet mode. You'll have to use the VIEW mode (this is just the portlet mode, nothing to do with your application, reading or writing data). Consider that the EDIT mode by default is only accessible to administrators and typically being used to change PortletPreferences, rarely database content (this is a simplification, but a good rule of thumb)
For this reason, Liferay names the EDIT mode "Preferences" on the UI and you typically navigate to it through the portlet's context menu ("Preferences", sic!)
Upvotes: 1
Reputation: 14678
You may take a look at liferay's service builder.
http://www.liferay.com/community/wiki/-/wiki/Main/Service+Builder
http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/service-build-2
If your data is not in same database as liferay, you can still use service builder as well
Upvotes: 1