从liferay portlet发送POST方法

时间:2012-03-23 12:05:08

标签: web-services post liferay portlet

我刚刚为liferay制作了一个带有web服务的portlet,以了解它是如何工作的。它工作正常,并且通过http的GET方法也可以工作,虽然抛出异常因为数据库是空的,但没关系。

所以我现在正在尝试的是通过编辑我的view.jsp来填充来自同一个portlet的数据库。

我的问题是,我应该如何或在何处将我的代码放入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>

此代码正确显示按钮和字段。我只是想知道在哪里放置代码以及如何发送此请求并在DB中存储内容:

serviceClassName:xxx.service.XServiceUtil

serviceMethodName:methodName

servletContextName:X-portlet

serviceParameters:["param1","paramN"]

param1:n

paramN:m

Web服务已构建并正常运行。

非常感谢,

拉​​法

1 个答案:

答案 0 :(得分:1)

我认为您的代码几乎是正确的,只需删除外部表单并保留aui:form即可。这应该对你有用

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

应使用post发送name参数。我注意到的另一件事是你的形式你没有给出动作网址。所以你应该写下面的内容

<portlet:actionURL var="configurationURL" />

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

然后你的portlet应该有processAction方法,它将使用你的localServiceUtil类调用适当的业务逻辑。

有关完整portlet创建的更多信息,请参阅以下链接

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