java 如何使用liferay portlet在db中插入数据

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15716377/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 20:37:25  来源:igfitidea点击:

how to insert data in db using liferay portlet

javamysqlliferay

提问by Java D

How to insert data in MySql using Liferay?

如何使用Liferay在MySql中插入数据?

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.

我已经从edit.jsp 创建了Edit.jsp、view.jsp 我想输入数据并且在view.jsp 中我想显示我的数据。在edit.jsp 中输入的这些数据应该存储在我的mysql 表中。我已经创建了 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.

我也有java文件。请告诉我应该在哪里编写插入逻辑以将数据存储到数据库中。

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

这是我的 Java 代码。我有edit.jsp 文件和view.jsp 文件,我使用service.xml 文件创建了表,并将我的portal-ext.properties 放在classes 文件夹中。有什么东西不见了吗?我是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);
        }
    }
}

回答by karthik

Follow the below steps:

请按照以下步骤操作:

    File-->new-->Liferay Project
    Right Click on WEB-INF-->new-->Liferay Service Builder-->Enter the package path(com.database) and namespace(A)-->Finish
    Now you have service.xml-->change the properties accoding to your requirement-->save it
    Right click on service.xml-->Liferay-->Build Services.
    Now you will get  some folders,classes and interfaces under docroot/ WEB-INF/src
    change in the  LiferayLocalServiceImpl.java  under com.database.service.impl
    create one package  like com.portlet in docroot/ WEB-INF/src -->create a class and continue the application

service.xml

服务.xml

<?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.database">
    <author>name</author>
    <namespace>S</namespace>

    <entity name="Book" local-service="true" remote-service="true">

        <!-- PK fields -->

        <column name="fooId" type="long" primary="true" />

        <!-- Audit fields -->

        <column name="companyId" type="long" />
        <column name="userId" type="long" />
        <column name="bookName" type="String" />
        <column name="author" type="String" />

    </entity>
</service-builder>

In jsp:

在jsp中:

    <%@ taglib uri="http://liferay.com/tld/aui" prefix="aui"%>
    <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
    <portlet:actionURL var="addBURL" name="addB"/>

    <aui:form method="post" action="<%=addBURL.toString()%>" name="fm"
        id="fm">
    <!--    <input type="text" name="bookName"/>

        <input type="text" name="author"/> -->

            <aui:input name="bookName" label="BookName" type="text"></aui:input>
            <aui:input name="author" label="Author" type="text"></aui:input>
            <aui:button type="submit" value="Submit" />

    <!-- <input type="button" name="submit" value="Submit"> -->
    </aui:form>

com.database.service.impl.BookLocalServiceImpl

com.database.service.impl.BookLocalServiceImpl

    package com.database.service.impl;

    import com.database.model.Book;
    import com.database.service.base.BookLocalServiceBaseImpl;
    import com.liferay.portal.kernel.exception.SystemException;

    public class BookLocalServiceImpl extends BookLocalServiceBaseImpl {

        public Book aaddBook(Book bookParam) {

            Book book;

            try {
                book = bookPersistence.create(counterLocalService
                        .increment(Book.class.toString()));
            } catch (SystemException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return book = null;
            }
            book.setAuthor(bookParam.getAuthor());
            book.setBookName(bookParam.getBookName());
            book.setCompanyId(bookParam.getCompanyId());
            book.setUserId(bookParam.getUserId());
            try {
                return bookPersistence.update(book, false);
            } catch (SystemException e) {
                e.printStackTrace();

            }

            return book;
        }

    }

com.portlet Demo Class

com.portlet 演示类

    package com.portlet;

    import java.io.IOException;

    import javax.portlet.ActionRequest;
    import javax.portlet.ActionResponse;
    import javax.portlet.PortletException;

    import com.database.model.Book;
    import com.database.model.impl.BookImpl;
    import com.database.service.BookLocalServiceUtil;
    import com.liferay.util.bridges.mvc.MVCPortlet;

    public class Demo extends MVCPortlet{

        public void addB(ActionRequest actionRequest,
                ActionResponse actionResponse) throws IOException, PortletException {
            System.out.println("Action");
            String author=actionRequest.getParameter("author");
            String bookName=actionRequest.getParameter("bookName");
            Book book=new BookImpl();
            book.setAuthor(author);
            book.setBookName(bookName);
            BookLocalServiceUtil.aaddBook(book);

        }

    }

回答by Piyas De

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.

您必须使用 Liferay 默认 API 来访问和插入默认 Liferay 表中的数据,或者如果您想访问/插入数据库中的自定义(自制)表,则必须使用 Liferay Service Builder。

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

在您的问题中 - 您可以先在数据库中手动创建表。

Then you can make service.xmland build the service using the ant build file which will give you the LocalServiceUtilclasses. In your case it is testimonialLocalServiceUtilclass.

然后,您可以service.xml使用 ant 构建文件制作和构建服务,该文件将为您提供LocalServiceUtil类。在你的情况下,它是testimonialLocalServiceUtil类。

Also as per your code, the processActionmethod overriding is correct.

同样根据您的代码,processAction方法覆盖是正确的。

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

请检查 service.xml 中的表和列规范。它应该没有任何问题。

Here is a link which may help you -

这是一个可以帮助您的链接-

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

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

谢谢

回答by Imdadul Huq Naim

I would disagree with @kartik about calling Book book = new BookImpl(); Use Book book = BookLocalServiceUtil.createBook(0)instead

我不同意@kartik 关于调用Book book = new BookImpl();使用Book book = BookLocalServiceUtil.createBook(0)替代

https://web.liferay.com/community/forums/-/message_boards/message/79177774

https://web.liferay.com/community/forums/-/message_boards/message/79177774

And for saving I would also recommend this article.

为了节省,我也推荐这篇文章。

https://javaeasyforu.blogspot.de/2014/06/insert-data-into-db-using-service.html

https://javaeasyforu.blogspot.de/2014/06/insert-data-into-db-using-service.html