我在为我@ActionMapping创建一个PDF文件.现在我想知道如何以保存/打开文件对话框的形式将这个pdf返回给用户?如果这一代人成功的话,我更喜欢这个显示下载链接.
我将spring-mvc 3.0.5与portlet结合使用.但是,如果有人有一些正常应用程序的指针,那么我可以从那里弄清楚.对于2.0,我读了一些关于扩展pdfgenerator类并在web.xml中进行修改的内容但是从现在开始我们只需要POJO ....
编辑:Adeel建议后的代码:
File file = new File("C:\\test.pdf");
response.setContentType("application/pdf");
try {
byte[] b = new byte[(int) file.length()];
OutputStream out = response.getPortletOutputStream();
out.write(new FileInputStream(file).read(b));
out.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "users/main";
Run Code Online (Sandbox Code Playgroud) 我创建了一个bean类并在我的控制器中使用它,但它似乎不起作用.即使我进入无效年龄,result.hasErrors仍然是假的.
Bean类:
public class User{
@Min(13)
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
控制器片段:
@ActionMapping(params = "myAction=validateUser")
public void validateUser(ActionRequest request, ActionResponse response, ModelMap model, @ModelAttribute("user") @Valid User user, BindingResult result ){
if(result.hasErrors()){
for(ObjectError oe : result.getAllErrors()){
System.out.println(oe.getDefaultMessage());
}
} else{
//code
}
}
Run Code Online (Sandbox Code Playgroud)
JSP:
<form:form action="${registerUser}" method="post" …Run Code Online (Sandbox Code Playgroud) 我花了最近六个小时来搜索谷歌和stackoverflow来回答这个问题.我原来是一名PHP开发人员,所以请耐心等待 - 从PHP控制器返回一个JSON数组是微不足道的.
我正在使用Spring MVC 3.0,我只想将JSON对象从我的Spring MVC Controller返回给一些Javascript.目前似乎没有简单的方法来使用portlet(https://jira.springsource.org/browse/SPR-7344)进行此操作.我见过的解决方案建议创建另一个提供JSON响应的DispatcherServlet,但我还没有找到一个记录良好的例子.如果有人知道一个很好的方法来完成这个(最好带注释),请告诉我!
之间的差异@RequestMapping,@ActionMapping并@RenderMapping没有对我很清楚.似乎所有上述内容最终都将请求URL映射到控制器中的实际方法.那么区别是什么呢?什么可以这样做@Rendermapping不能被做@Requestmapping?
我正在寻找一种通过Liferay Portal将PDF(直接显示)文件发送到浏览器的方法.找到了许多解决方案 - 最受欢迎的解决方案是编写一个可以完成工作的Servlet.我已经阅读了JSR 286规范中关于Portlet资源服务的内容,有人可以为Spring 3.0 Portlet MVC详细说明吗?
<servlet>
<display-name>DownloadServlet</display-name>
<servlet-name>DownloadServlet</servlet-name>
<servlet-class>com.liferay.portal.pdf.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
<url-pattern>/DownloadServlet/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
Servlet包括:
private void downloadServlet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
logger.debug(" downloadServlet :: ");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
ServletOutputStream op = null;
try {
//Something
pdfContentVO=//getpdf VO here
String filename = "PDFFILE_"+pdfNumber+".pdf";
op = resp.getOutputStream();
resp.setContentType("application/pdf");
resp.setHeader("Content-Disposition", "attachment; filename="
+ filename);
resp.setContentLength(pdfContentVO.getPdfData().length);
System.out.println("pdfcontent"+pdfContentVO.getPdfData());
op.write(pdfContentVO.getPdfData());
op.flush();
op.close();
} catch(final IOException e) {
System.out.println ( "IOException." );
throw e;
} …Run Code Online (Sandbox Code Playgroud) 我正在学习如何在 Liferay 7 CE GA 3 门户平台上创建 portlet。
为此,我按照 liferay 站点中给出的教程,使用 maven、gradle 创建了一些测试 portlet。
但现在,我需要从服务器中删除这些 portlet。每当我启动 Liferay 捆绑包中提供的 tomcat 服务器时,那些先前部署的 portlet 就会出现在网页上。我已经尝试过,但找不到部署在tomcat内部的war文件,无法删除它们。
我尝试删除 liferay 工作目录中的 portlet 文件夹并清除临时目录,但这没有帮助。
PS:我通过将 war 文件复制到 liferay 包的“部署”目录来手动部署 portlet。
我在Spring MVC中开发了一个portlet,它部署在Liferay中.显然,我有一个portlet视图模式的渲染阶段的问题.
控制器用于查看模式
package graphui.controller;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.portlet.bind.annotation.ActionMapping;
import org.springframework.web.portlet.bind.annotation.RenderMapping;
/**
*
* Controller for VIEW mode of portlet.
*/
@Controller("graphViewController")
@RequestMapping(value = "VIEW")
public class GraphViewController{
@ActionMapping
public void handleActionRequest(ActionRequest request, ActionResponse response)throws Exception {
return;
}
@RenderMapping
public ModelAndView handleRenderRequest(RenderRequest request, RenderResponse response, ModelMap model) {
model.addAttribute("nodes", "123");
model.addAttribute("edges", "123");
return new ModelAndView("index", model);
}
}
Run Code Online (Sandbox Code Playgroud)
的index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" …Run Code Online (Sandbox Code Playgroud) 我是Spring和Portlet的新手.我想用jqgrid来显示一些列表.我试图在控制器中调用一个方法,该方法使用@RequestMapping进行注释,但该方法未被调用
我的控制器有以下方法
@Controller(value = "myController")
public class MyController {
@RequestMapping(value="/myURL",method=RequestMethod.GET)
public @ResponseBody MyDTO initItemSearchGrid(RenderResponse response, RenderRequest request){
MyDTO myDto=new MyDTO();
return myDto;
}
}
Run Code Online (Sandbox Code Playgroud)
我的JSP代码使用AJAX
var urlink="/myURL"; /* myURL is the exact String written in value Attribute of
resourceMapping in Controller*/
$.ajax({
url :urlink,
cache: false,
data:$('#myForm').formSerialize(),
dataType: "json",
type: "GET",
contentType: "application/json; charset=utf-8",
success: function(jsondata){
...
}
});
Run Code Online (Sandbox Code Playgroud)
当上面的AJAX代码正在执行时,我的方法不会被调用.
portlet ×6
spring-mvc ×4
spring ×3
ajax ×2
java ×2
annotations ×1
json ×1
liferay ×1
liferay-6 ×1
liferay-7 ×1
maven ×1
portal ×1
tomcat ×1
validation ×1