【发布时间】:2015-05-26 23:07:48
【问题描述】:
这是我的动作类,我必须将任何文档保存到数据库中,但它无法正常工作,并且在控制台中出现 NoSuchMethodException (javax.portlet.ActionRequest, javax.portlet.ActionResponse) 错误
package com.test.docupload;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.portlet.PortletException;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.captcha.CaptchaMaxChallengesException;
import com.liferay.portal.kernel.captcha.CaptchaTextException;
import com.liferay.portal.kernel.captcha.CaptchaUtil;
import com.liferay.portal.kernel.dao.jdbc.OutputBlob;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.upload.UploadRequest;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import com.test.docup.model.Doc;
import com.test.docup.service.DocLocalServiceUtil;
/**
* Portlet implementation class DocumentUploadAction
*/
public class DocumentUploadAction extends MVCPortlet {
public void addDoc(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException {
UploadRequest uploadRequest = PortalUtil.getUploadPortletRequest(resourceRequest);
File docImage = uploadRequest.getFile("doc");
String title = ParamUtil.getString(uploadRequest, "firstName");
InputStream fis = new FileInputStream(docImage);
OutputBlob dataOutputBlob = new OutputBlob(fis, docImage.length());
try {
Doc doc = DocLocalServiceUtil.createDoc(CounterLocalServiceUtil.increment());
doc.setDocName(title);
doc.setOwner(10199);
doc.setData(dataOutputBlob);
doc = DocLocalServiceUtil.addDoc(doc);
if (doc != null) {
SessionMessages.add(resourceRequest.getPortletSession(), "document-added-success");
System.out.println("document-added-success");
} else {
SessionErrors.add(resourceRequest.getPortletSession(), "document-added-failed");
System.out.println("document-added-failed::");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是我的jsp
<%@page import="com.liferay.portal.kernel.servlet.SessionMessages"%>
<%@ include file="init.jsp" %>
<c:if test='<%=SessionMessages.contains(renderRequest.getPortletSession(),"document-added-success")%>'>
<liferay-ui:success key="document-added-success" message="Document has been added successfully." />
</c:if>
<c:if test='<%=SessionMessages.contains(renderRequest.getPortletSession(),"document-added-failed")%>'>
<liferay-ui:error key="document-added-failed" message="Document Uploaded failed." />
</c:if>
<portlet:actionURL var="addDocActionURL" name="addDoc"></portlet:actionURL>
<aui:form action="<%= addDocActionURL %>" method="post" name="fm" enctype="multipart/form-data">
<aui:input name="title" value="" label="Doc Title"/>
<aui:input name="Doc" value="" type="file" label="Select Doc"/>
<aui:button-row>
<aui:button type="submit" />
</aui:button-row>
</aui:form>
我已将ActionRequest 更改为ResourceRequest,但仍然无法正常工作。
【问题讨论】:
-
您不能将 ResourceRequest 用于 actionURL。