1
Vaardin有沒有辦法掛鉤到請求鏈,並在VaadinSession
提供的真正請求/響應週期內執行操作?目前我使用javax.servlet.Filter
,但似乎VaadinSession.getCurrent()
設置在更深的地方,並且在濾波器本身中,它在chain.doFilter
()之前和之後均未設置。帶過濾器鏈的Vaadin請求過濾器?
Vaardin有沒有辦法掛鉤到請求鏈,並在VaadinSession
提供的真正請求/響應週期內執行操作?目前我使用javax.servlet.Filter
,但似乎VaadinSession.getCurrent()
設置在更深的地方,並且在濾波器本身中,它在chain.doFilter
()之前和之後均未設置。帶過濾器鏈的Vaadin請求過濾器?
我找到了解決方法。 首先,我不能插入請求處理程序鏈,因爲沒有這樣的結構。爲了模擬它,我已經將我的代碼分成了預先請求和請求後代碼(對我而言,這有點不錯)。我在普通的VaadinRequestHandler
中做我的預先要求的東西,並返回false(對於正常的請求繼續)。請求後的內容變爲javax.serlvet.Filter
,映射到web.xml
。
其次,如果任何人是具有同樣的問題,並且該代碼也可裂使用相同的圖案,這裏是一個預請求(vaadin側)列表:
public class MyVaadinServlet extends VaadinServlet{
@Override
protected VaadinServletService createServletService(DeploymentConfiguration deploymentConfiguration) throws ServiceException {
VaadinServletService service = new VaadinServletService(this,
deploymentConfiguration){
@Override
protected List<RequestHandler> createRequestHandlers() throws ServiceException {
List<RequestHandler> handlers = super.createRequestHandlers();
handlers.add((session, request, response) -> {
// HERE GOES THE CODE
return false;
});
return handlers;
}
};
service.init();
return service;
}
}
好的,我理解如果我想在處理ui偵聽器之前偷偷進入請求鏈,那麼我必須擴展VaadinService並覆蓋它的createRequestHandlers。擴展類可以在覆蓋'VaadinServlet.createServletService()'方法中創建。 –
不知道我是否應該關閉這個問題 –