node-web-mvc
Version:
node spring mvc
42 lines (41 loc) • 1.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const RedirectView_1 = __importDefault(require("../RedirectView"));
const InternalResourceView_1 = __importDefault(require("../InternalResourceView"));
const IS_REDIRECT = /^redirect:/;
const IS_FORWARD = /^forward:/;
class UrlBasedViewResolver {
/**
* 构造一个 UrlBasedViewResolver 视图解析器
* @param prefix 用于拼接在视图名的前缀
* @param suffix 用于追加在视频名后的后缀
*/
constructor(prefix = '', suffix = '') {
this.prefix = prefix;
this.suffix = suffix;
}
/**
* 根据传入的视图与数据来获取对应的视图
* @param {String} viewName 视图名称
* @param {Object} model 视图数据
* @param {HttpServletRequest} request 当前http请求实例
*/
resolveViewName(viewName, model, request) {
if (IS_REDIRECT.test(viewName)) {
return new RedirectView_1.default(viewName.replace(IS_REDIRECT, ''));
}
else if (IS_FORWARD.test(viewName)) {
return new InternalResourceView_1.default(viewName.replace(IS_FORWARD, ''));
}
// 执行内部匹配,主要用于子类重写用
const name = this.prefix + viewName + this.suffix;
return this.internalResolve(name, model, request);
}
internalResolve(viewName, model, request) {
return null;
}
}
exports.default = UrlBasedViewResolver;