Обработка и ведение журнала ошибок Spring + Thymeleaf Engine

Если вы хотите загружать большие файлы, вам определенно нужно будет изучить режим потоковой передачи WCF .

В принципе, вы можете изменить режим передачи на свой привязку; по умолчанию он буферизуется, то есть все сообщение должно буферизироваться на отправителе, сериализоваться, а затем передаваться в целом.

При потоковой передаче вы можете определить одностороннюю передачу (только для загрузки, только для загрузки) или двунаправленной потоковой передачи. Это делается путем установки transferMode вашей привязки к StreamedRequest, StreamedResponse или просто Streamed.


   
      
   

Тогда вам нужно иметь контракт на обслуживание, который либо получает параметр введите Stream (для загрузки) или вернет значение типа Stream (для загрузки).

[ServiceContract]
public interface IFileUpload
{
    [OperationContract]
    bool UploadFile(Stream stream);
}

Это должно быть сделано!

1
задан Hitham S. AlQadheeb 2 March 2019 в 04:29
поделиться

1 ответ

Фильтрующий подход в итоге сработал, но TemplateEngineException обернут вокруг NestedServletException.

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.springframework.web.util.NestedServletException;
import org.thymeleaf.exceptions.TemplateEngineException;

/**
 * Filter to catch Thymeleaf template errors
 */
public class ThymeleafErrorFilter implements Filter {

    @Override
    public void init(final FilterConfig filterConfig) {

    }

    @Override
    public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
        try {
            filterChain.doFilter(servletRequest, servletResponse);
        } catch (final NestedServletException nse) {
            if(nse.getCause() instanceof TemplateEngineException) {
                //Do stuff here
                ...
            }

            throw nse;
        }
    }

    @Override
    public void destroy() {
    }
}

И затем регистрация фильтра

    /**
     * @return thymeleaf error filter
     */
    @Bean
    public FilterRegistrationBean thymeleafErrorFilter() {
        FilterRegistrationBean thymeleafErrorFilter = new FilterRegistrationBean();
        thymeleafErrorFilter.setName("thymeleafErrorFilter");
        thymeleafErrorFilter.setFilter(new ThymeleafErrorFilter());
        thymeleafErrorFilter.addUrlPatterns("/*");
        return thymeleafErrorFilter;
    }
0
ответ дан JdWiebe 2 March 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: