我刚刚为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服务已构建并正常运行。
非常感谢,
拉法
答案 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