当前位置: 首页 > 知识库问答 >
问题:

Angular 4Spring引导ContentNe协商ViewResolver

郎雪风
2023-03-14

我有一个应用程序,我使用的是带Spring靴的Angular 4。它有主页、仪表板、检查、报告页等。。。当我点击导航菜单中的任何链接时,它就会进入该页面。当我点击localhost:8080时,它会进入主页。

之前我们没有任何视图解析器。我们需要通过点击超链接下载其中一个报告页面中的Excel/PDF/CSV。因此,我添加了一个配置类和控制器并进行了测试,当我点击直接URL时,它运行良好(意味着我可以下载excel/pdf/csv)。但当我点击localhost:8080时,它没有显示主页,而是下载Excel。我确信我缺少一些配置。需要帮忙吗。。。我可以在需要时分享更多代码。。。

直接URL:localhost:8080/api/inspDefectHistReportDownload。xls

网络配置。JAVA

@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer
                .defaultContentType(MediaType.APPLICATION_JSON)
                .favorPathExtension(true);
    }

    /*
     * Configure ContentNegotiatingViewResolver
     */
    @Bean
    public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
        ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
        resolver.setContentNegotiationManager(manager);

        // Define all possible view resolvers
        List<ViewResolver> resolvers = new ArrayList<>();

        //resolvers.add(csvViewResolver());
        resolvers.add(excelViewResolver());
        //resolvers.add(pdfViewResolver());

        resolver.setViewResolvers(resolvers);
        return resolver;
    }

    /*
     * Configure View resolver to provide XLS output using Apache POI library to
     * generate XLS output for an object content
     */
    @Bean
    public ViewResolver excelViewResolver() {
        return new ExcelViewResolver();
    }

    /*
     * Configure View resolver to provide Csv output using Super Csv library to
     * generate Csv output for an object content
     */
    @Bean
    public ViewResolver csvViewResolver() {
        return new CsvViewResolver();
    }

    /*
     * Configure View resolver to provide Pdf output using iText library to
     * generate pdf output for an object content
     */
    @Bean
    public ViewResolver pdfViewResolver() {
        return new PdfViewResolver();
    }

当然我有ReportController,ExcelView。。。和ExcelViewResolver。爪哇等等。。。(如果需要,我也可以发布这些课程)

共有1个答案

闻华容
2023-03-14

经过长时间的调查,我发现下面的代码适合我。现在我可以通过查看URL进入主页和其他屏幕,点击特定屏幕上的超链接,我可以下载所需的excel。

网络配置。JAVA

@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer
    .defaultContentType(MediaType.APPLICATION_JSON)
    .ignoreAcceptHeader(true);
}

 @Override
 public void configureViewResolvers(ViewResolverRegistry registry) {
    registry.enableContentNegotiation(
            new ExcelView()
    );
}
 类似资料:
  • Apache支持HTTP/1.1规范中定义的内容协商,它可以根据浏览器提供的参数选择一个资源最合适的媒体类型、语言、字符集和编码的表现方式。它还实现了一些对浏览器发送不完整内容协商信息进行智能处理的能力。 内容协商由mod_negotiation模块支持,并被默认编译进服务器。 关于内容协商(Content Negotiation) 一个资源可能会有多种不同的表现形式,比如,可能会有不同语言或者媒

  • You can configure how Spring MVC determines the requested media types from the request. The available options are to check the URL path for a file extension, check the "Accept" header, a specific quer

  • 主要内容:关于内容协商Apache HTTPD支持规范中描述的内容协商。它可以根据浏览器提供的媒体类型,语言,字符集和编码首选项,选择资源的最佳表示形式。它还实现了一些功能,可以更智能地处理来自发送不完整协商信息的浏览器的请求。 内容协商由模块提供,该模块默认编译。 关于内容协商 资源可以以多种不同的表示形式提供。例如,它可能以不同语言或不同媒体类型或组合形式提供。选择最合适选择的一种方法是为用户提供索引页面,然后让他

  • 内容协商是基于客户端或服务器偏好选择多种可能的表示之一以返回客户端的过程。 确定接受的渲染器 REST framework 根据可用的渲染器,每个渲染器的优先级以及客户端的 Accept: header,使用简单的内容协商风格来确定应将哪些媒体类型返回给客户端。所使用的风格部分由客户端驱动,部分由服务器驱动。 更具体的媒体类型优先于较不特定的媒体类型。 如果多种媒体类型具有相同的特性,则优先根据为

  • 当需要引导客户端或一些无连接协议时,需要使用Bootstrap类。 在本节中,我们将回顾可用的各种方法引导客户端,引导线程,和可用的管道实现。 客户端引导方法 下表是 Bootstrap 的常用方法,其中很多是继承自 AbstractBootstrap。 Table 9.1 Bootstrap methods 名称 描述 group 设置 EventLoopGroup 用于处理所有的 Channe

  • 问题内容: 我正在尝试使用JSch(0.1.44-1)通过ssh连接到远程sftp服务器,但是在“ session.connect();”期间 我收到此异常: 来自JSch的日志: 我可以使用linux sftp命令登录到远程服务器。我试图在互联网上找到任何线索,但是失败了。 linux sftp命令的调试输出: 问题答案: SSH客户端和服务器在几个地方尝试并同意一个通用实现。我知道的两个是加密