2012-03-23 2 views
2

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

Так что теперь я пытаюсь заполнить базу данных из того же портлета, отредактировав свой 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

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

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

Параметр имени должен быть отправлен с использованием сообщения. Еще одна вещь, которую я заметил, в вашей форме, вы не указали 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

+0

Привет, спасибо большое, но вы оставили что-то в пути, что не писать :) Я понимаю немного больше того, что я придется делать, но у меня все еще есть некоторые вопросы: есть ли в моем processAction, где мне нужно написать строку, содержащую URL-адрес, который должен быть отправлен на службу, не так ли? Я думаю, что могу сделать это и в jsp между <% %>. – agapitocandemor

+0

К сожалению, у меня был firefox 3.5.6, и он не показывал бы меня WYSIWYG редактор –

+0

Я изменил свой ответ с IE –