简体   繁体   English

Spring MVC AbstractView Java配置

[英]Spring MVC AbstractView Java configuration

I am trying to implement Excel/PDF download using org.springframework.web.servlet.view.document. 我正在尝试使用org.springframework.web.servlet.view.document实现Excel / PDF下载。 AbstractXlsxView . AbstractXlsxView

My application is configured using org.springframework.web.servlet.support. 我的应用程序是使用org.springframework.web.servlet.support配置的。 AbstractAnnotationConfigDispatcherServletInitializer . AbstractAnnotationConfigDispatcherServletInitializer

I have created my AbstractXlsxView with @Component and specified name to it. 我用@Component创建了我的AbstractXlsxView并为其指定了名称。

@Component(VIEW_NAME_BASE_XLSX)
public class BaseXlsxView extends AbstractXlsxView {

public static final String VIEW_NAME_BASE_XLSX = "baseXlsxView";
public static final String MODEL_ATTRIBUTE_NAME_BASE_XLSX_VIEW_BEAN = "MODEL_ATTRIBUTE_NAME_BASE_XLSX_VIEW_BEAN";

@Override
protected void buildExcelDocument(Map<String, Object> modelMap, Workbook workbook, HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    Sheet sheet = workbook.createSheet("Base Sheet");

    Row row = sheet.createRow(0);
    Cell cell = row.createCell(0, CellType.STRING);
    cell.setCellValue(new Date());

    response.setHeader("Content-Disposition",
            "attachment; filename=" + "BaseExcelDocument" + System.currentTimeMillis());

}

}

I am using the specified name as view name in ModelAndView returned by my controller. 我在控制器返回的ModelAndView中使用指定的名称作为视图名称。

@GetMapping(value = "/exportBaseXlsx")
public ModelAndView exportBaseXlsx(ModelMap modelMap, HttpServletRequest httpServletRequest) {
    return new ModelAndView(BaseXlsxView.VIEW_NAME_BASE_XLSX, BaseXlsxView.MODEL_ATTRIBUTE_NAME_BASE_XLSX_VIEW_BEAN,
            null);
}

This always throws 404 . 这总是抛出404 It is trying to read a JSP file(as I have configured View resolver) instead of reading BaseXlsxView . 它正在尝试读取JSP文件(因为我已经配置了View解析器),而不是读取BaseXlsxView

在此处输入图片说明

I have seen this way of implementing(not using views.xml with <bean id="myBeanId" class="myClassQualifiedName" > ) AbstractView is working in other applications but it is not working here. 我已经看到了这种实现方式(不将Views.xml<bean id="myBeanId" class="myClassQualifiedName" >AbstractView在其他应用程序中有效,但在这里不起作用。

我记得SpringMVC如果没有分配默认的view-adapter,也许默认的view-adapter返回jsp view。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM