1

Liferayを使用してMySqlにデータを挿入するには?

Edit.jsp、view.jsp を edit.jsp から作成しました。データを入力したいのですが、view.jsp にデータを表示したいのです。edit.jsp に入力されたこのデータは、mysql テーブルに保存する必要があります。service.xml、portal-ext.properties を作成しました。

Javaファイルもあります。データをデータベースに保存する挿入ロジックをどこに記述すればよいか教えてください。

これが私のJavaコードです。edit.jsp ファイルと view.jsp ファイルがあり、service.xml ファイルを使用してテーブルを作成し、portal-ext.properties をクラス フォルダーに配置しました。何か足りないものはありますか?私は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);
        }
    }
}
4

3 に答える 3

2

デフォルトのLiferayテーブルにアクセスしてデータを挿入するには、LiferayのデフォルトAPIを使用するか、データベースのカスタム(自作)テーブルにアクセス/挿入する場合は、Liferay Service Builderを使用する必要があります。

あなたの質問では、最初にデータベースにテーブルを手動で作成できます。

次に、クラスservice.xmlを提供する ant ビルド ファイルを使用して、サービスを作成およびビルドできます。LocalServiceUtilあなたの場合、それはtestimonialLocalServiceUtilクラスです。

また、コードに従って、processActionメソッドのオーバーライドは正しいです。

service.xml のテーブルとカラムの仕様を確認してください。問題はないはずです。

ここにあなたを助けるかもしれないリンクがあります -

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

また、例外が発生した場合は、問題の領域を理解できるように、それらを共有してください.

ありがとう

于 2013-03-30T11:47:49.187 に答える
0

呼び出しについて@kartikに同意しませんBook book = new BookImpl()Book book = BookLocalServiceUtil.createBook(0)代わりに使用

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

また、節約のために、この記事もお勧めします。

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

于 2017-03-02T12:38:45.500 に答える