掲示板
Help, download file using SimpleFormController and serveResource
12年前 に Roberto Rodriguez によって更新されました。
Help, download file using SimpleFormController and serveResource
New Member 投稿: 17 参加年月日: 10/08/18 最新の投稿
I need to download a file in a portlet and I've read that with the method: serveResource, but i can not work in my project.
How I can ntegration of this method serveResource with my application?
ReportControllerResponse.java
portlet.xml
portlet/report-context.xml
How I can ntegration of this method serveResource with my application?
ReportControllerResponse.java
package ve.com.cantv.iptv.portal.controller.report;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletRequest;
import javax.portlet.PortletSession;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.springframework.validation.BindException;
import org.springframework.web.portlet.mvc.SimpleFormController;
import org.springframework.web.portlet.util.PortletUtils;
import ve.com.cantv.common.hera.util.CantvProperty;
import ve.com.cantv.iptv.portal.model.ReportPortal;
import ve.com.cantv.iptv.portal.util.CommonsPortalAdm;
import ve.com.cantv.iptv.proxy.portal.exception.PortalException;
public class ReportControllerResponse extends SimpleFormController {
CommonsPortalAdm commonsPortalAdm = new CommonsPortalAdm();
public void afterPropertiesSet() throws Exception {
this.setRedirectAction(true);
System.out.println("------ Start Controller ---------------");
}
/**
*
* Load element to form.
*
* @param request
*/
protected Object formBackingObject(PortletRequest request) {
PortletSession session = request.getPortletSession();
ReportPortal reportPortal = (ReportPortal) session
.getAttribute("reportPortal");
return reportPortal;
}
/**
*
* Send information to the next controller.
*
* @param request
* @param response
* @param obj
* @param errors
*/
public void onSubmitAction(ActionRequest request, ActionResponse response,
Object obj, BindException errors) throws Exception {
PortletUtils.clearAllRenderParameters(response);
PortletSession session = request.getPortletSession();
response.setRenderParameter("action", "reportBegin");
}
public void serveResource(ResourceRequest req, ResourceResponse res)
throws PortletException, IOException {
OutputStream out = res.getPortletOutputStream();
File imagen = new File("C:\\prueba.pdf");
InputStream in = new FileInputStream(imagen);
String mime = getPortletContext().getMimeType(imagen.getAbsolutePath());
res.setContentType(mime);
if (in == null) {
out.close();
} else {
byte[] buffer = new byte[4096];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
in.close();
out.close();
}
}
}
portlet.xml
<portlet>
<portlet-name>reportIPTV</portlet-name>
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/context/portlet/report-context.xml</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
<title>Reportes</title>
</portlet-info>
</portlet>
portlet/report-context.xml
<!--?xml version="1.0" encoding="UTF-8" ?-->
<beans>
<!-- Controlador Reporte Inicio -->
<bean id="reportBeginController" class="ve.com.cantv.iptv.portal.controller.report.ReportController">
<property name="sessionForm"><value>true</value></property>
<property name="commandName"><value>model</value></property>
<property name="commandClass"><value>ve.com.cantv.iptv.portal.model.ReportPortal</value></property>
<property name="formView"><value>report</value></property>
<property name="successView" value="report" />
</bean>
<!-- Controlador Reporte Fin -->
<bean id="reportEndController" class="ve.com.cantv.iptv.portal.controller.report.ReportControllerResponse">
<property name="sessionForm"><value>true</value></property>
<property name="commandName"><value>model</value></property>
<property name="commandClass"><value>ve.com.cantv.iptv.portal.model.ReportPortal</value></property>
<property name="formView"><value>reportResponse</value></property>
<property name="successView" value="reportResponse" />
</bean>
<!-- Handler Mapping -->
<bean id="parameterMappingInterceptor" class="org.springframework.web.portlet.handler.ParameterMappingInterceptor" />
<bean id="portletModeParameterHandlerMapping" class="org.springframework.web.portlet.handler.PortletModeParameterHandlerMapping">
<property name="interceptors">
<list>
<ref bean="parameterMappingInterceptor" />
</list>
</property>
<property name="portletModeParameterMap">
<map>
<entry key="view">
<map>
<entry key="reportBegin"><ref bean="reportBeginController" /></entry>
<entry key="reportEnd"><ref bean="reportEndController" /></entry>
</map>
</entry>
</map>
</property>
</bean>
<bean id="portletModeHandlerMapping" class="org.springframework.web.portlet.handler.PortletModeHandlerMapping">
<property name="portletModeMap">
<map>
<entry key="view"><ref bean="reportBeginController" /></entry>
</map>
</property>
</bean>
<!-- Default View Resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="cache" value="false" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/report/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
12年前 に David H Nebinger によって更新されました。
RE: Help, download file using SimpleFormController and serveResource
Liferay Legend 投稿: 14919 参加年月日: 06/09/02 最新の投稿
Have you been able to determine if your serveResource() method is actually getting called?
12年前 に Roberto Rodriguez によって更新されました。
RE: Help, download file using SimpleFormController and serveResource
New Member 投稿: 17 参加年月日: 10/08/18 最新の投稿
The method is not called, I do not understand why.
12年前 に David H Nebinger によって更新されました。
RE: Help, download file using SimpleFormController and serveResource
Liferay Legend 投稿: 14919 参加年月日: 06/09/02 最新の投稿
Do you know if you have the portlet 2.0 jar, or just portlet 1? 2.0 added the serveResource() method...
12年前 に Roberto Rodriguez によって更新されました。
RE: Help, download file using SimpleFormController and serveResource
New Member 投稿: 17 参加年月日: 10/08/18 最新の投稿
I have portlet 2.0 jar