nutz 如何实现返回.html文件
3 回复
神马意思,html直接>>过去
来自炫酷的 NutzCN
自己搞定啦 ,汗汗,看源码忽略了一个总要的细节
自定义了一个ViewMarker和View
在module总配置了一下 @views
下面粘贴一下做的测试:
public class MyViewMarker implements ViewMaker {
@Override
public View make(Ioc ioc, String type, String value) {
if(type.toLowerCase().contains("htm"))
{
return new MyView(value);
}
return new JspView(value);
}
}
public class MyView extends AbstractPathView {
public MyView(String dest) {
super(dest);
}
public void render(HttpServletRequest req, HttpServletResponse resp,
Object obj) throws Throwable {
String path = evalPath(req, obj);
String args = "";
if (path != null && path.contains("?")) { //将参数部分分解出来
args = path.substring(path.indexOf('?'));
path = path.substring(0, path.indexOf('?'));
}
String ext = getExt();
// 空路径,采用默认规则
if (Strings.isBlank(path)) {
path = Mvcs.getRequestPath(req);
path = "/WEB-INF"
+ (path.startsWith("/") ? "" : "/")
+ Files.renameSuffix(path, ext);
}
// 绝对路径 : 以 '/' 开头的路径不增加 '/WEB-INF'
else if (path.charAt(0) == '/') {
if (!path.toLowerCase().endsWith(ext))
path += ext;
}
// 包名形式的路径
else {
path = "/WEB-INF/" + path.replace('.', '/') + ext;
}
// 执行 Forward
path = path + args;
RequestDispatcher rd = req.getRequestDispatcher(path);
if (rd == null)
throw Lang.makeThrow("Fail to find Forward '%s'", path);
// Do rendering
rd.forward(req, resp);
}
/**
* 子类可以覆盖这个方法,给出自己特殊的后缀,必须小写哦
*
* @return 后缀
*/
protected String getExt() {
return ".htm";
}
}
设置一下需要返回视图的后缀即可,忽略了这一点,默认访问的路径也可以自定义。。。。。
添加回复
请先登陆