node-web-mvc
Version:
node spring mvc
48 lines (47 loc) • 2.13 kB
JavaScript
;
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;