UNPKG

node-web-mvc

Version:
48 lines (47 loc) 2.13 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /** * @module RequestMappingHandlerAdapter * @description 用于根据配置的路由mapping来处理action */ const AbstractHandlerMethodAdapter_1 = __importDefault(require("../method/AbstractHandlerMethodAdapter")); const HandlerMethod_1 = __importDefault(require("../method/HandlerMethod")); const ServletInvocableHandlerMethod_1 = __importDefault(require("../method/ServletInvocableHandlerMethod")); const ModelAndViewContainer_1 = __importDefault(require("../models/ModelAndViewContainer")); const ModelAndView_1 = __importDefault(require("../models/ModelAndView")); class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter_1.default { setArgumentResolver(value) { this.argumentResolver = value; } getArgumentResolver() { return this.argumentResolver; } setReturnvalueHandlers(value) { this.returnvalueHandlers = value; } getReturnvalueHandlers() { return this.returnvalueHandlers; } supportsInternal(handler) { return handler instanceof HandlerMethod_1.default; } async handleInternal(servletContext, handler) { const argumentResolver = this.argumentResolver; const mavContainer = new ModelAndViewContainer_1.default(); const invocableMethod = new ServletInvocableHandlerMethod_1.default(handler); // 设置返回处理器 invocableMethod.setReturnValueHandlers(this.getReturnvalueHandlers()); // 解析参数值 const resolvedArgs = await argumentResolver.resolveArguments(servletContext, handler); // 执行接口函数 await invocableMethod.invoke(servletContext, mavContainer, resolvedArgs); if (mavContainer.requestHandled) { return null; } return new ModelAndView_1.default(mavContainer.view, mavContainer.model, mavContainer.status); } } exports.default = RequestMappingHandlerAdapter;