Отправить метод POST из портлета liferay - PullRequest
2 голосов
/ 23 марта 2012

Я только что сделал портлет с веб-сервисом для liferay, чтобы узнать, как он работает. Он работает нормально, и метод GET через http также работает, хотя и выдает исключение, потому что база данных пуста, но это нормально.

Итак, я пытаюсь заполнить базу данных из того же портлета, отредактировав мой view.jsp.

У меня вопрос: как или где я должен поместить свой код в jsp, чтобы отправить запрос POST для добавления строки в базу данных? Я хотел бы использовать aui, чтобы показать поле и кнопку, чтобы вы написали, что вы хотите вставить, нажмите кнопку Отправить и отправьте запрос POST.

<%@ page import="javax.portlet.PortletPreferences" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>

<portlet:defineObjects />

<% 
PortletPreferences prefs = renderRequest.getPreferences(); 
String name = (String)prefs.getValue("name", "Employee name");  
%>

Please insert you new <b>Employee</b> name.

<form method="post">
<aui:form method="post">
<aui:input label="New Employee: " name="name" type="text" value="<%=name%>"/> 
<aui:button type="submit" /> 
</aui:form> 
</form>

Этот код правильно показывает кнопку и поле. Я просто хочу знать, где я должен поместить код и как, чтобы отправить этот запрос и сохранить что-то в БД:

serviceClassName:xxx.service.XServiceUtil

serviceMethodName:methodName

servletContextName:X-portlet

serviceParameters:["param1","paramN"]

param1:n

paramN:m

Веб-сервис создан и работает.

Большое спасибо,

Рафа

1 Ответ

1 голос
/ 23 марта 2012

Я думаю, что ваш код почти правильный, просто удалите внешнюю форму и сохраните форму aui :.И это должно работать для вас

<aui:form method="post">
<aui:input label="New Employee: " name="name" type="text" value="<%=name%>"/> 
<aui:button type="submit" /> 
</aui:form> 

Параметр name должен быть отправлен с помощью post.Еще одна вещь, которую я заметил, в вашей форме вы не дали URL действия.Поэтому вы должны написать что-то вроде следующего:

<portlet:actionURL var="configurationURL" />

<aui:form method="post" action="<%=configurationURL%>">

Тогда ваш портлет должен иметь метод processAction, который будет вызывать соответствующую бизнес-логику с использованием вашего класса localServiceUtil.

Подробнее о создании портлета полностью см.следующая ссылка

http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/portlet-development

...