在jfinal2.2中使用如下方式设置是没问题的,可是在jfinal3.0中怎么就不可以了呢?
我通过如下的方式设置视图路径的
@Override
public void configConstant(Constants me) {
// TODO Auto-generated method stub
loadPropertyFile("system.properties");
PropKit.use("system.properties");
}
@Override
public void afterJFinalStart() {
Configuration cf = FreeMarkerRender.getConfiguration();
Map<String, Object> map = new HashMap<String, Object>();
map.put("webcxp", JFinal.me().getContextPath());
map.put("locale", getProperty("locale"));
try {
cf.setSharedVaribles(map);
} catch (TemplateModelException e) {
e.printStackTrace();
}
if (getPropertyToBoolean("jfinal.devmode")) {
cf.setTemplateUpdateDelay(getPropertyToInt("template.update_delay", 0));
} else {
cf.setTemplateUpdateDelay(getPropertyToInt("template.update_delay", 300));
}
cf.setDefaultEncoding(getProperty("template.encoding"));
cf.setURLEscapingCharset(getProperty("url_escaping_charset"));
cf.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX);
cf.setWhitespaceStripping(true);
cf.setClassicCompatible(true);
cf.setNumberFormat(getProperty("template.number_format"));
cf.setBooleanFormat(getProperty("template.boolean_format"));
cf.setDateTimeFormat(getProperty("template.datetime_format"));
cf.setDateFormat(getProperty("template.date_format"));
cf.setTimeFormat(getProperty("template.time_format"));
cf.setServletContextForTemplateLoading(JFinal.me().getServletContext(), getProperty("template.loader_path"));
logger.info(" cxp web server is ready!!");
super.afterJFinalStart();
}
其中system.properties的内容为
#------------ Template ------------
template.encoding=UTF-8
#template.update_delay=3600
#\u5f00\u53d1\u4f7f\u7528\u6a21\u677f\u66f4\u65b0\u65f6\u95f4\u4e3a0
template.update_delay=0
template.number_format=0.######
template.boolean_format=true,false
template.datetime_format=yyyy-MM-dd HH:mm:ss
template.date_format=yyyy-MM-dd
template.time_format=HH:mm:ss
template.loader_path=/WEB-INF/template
locale=zh_CN
url_escaping_charset=UTF-8
jfinal.devmode=true
在路由配置中添加如下代码:
me.add("/",IndexController.class);
然后我在indexcontroller中实现如下方法:
public class IndexController extends Controller {
public void index()
{
renderJsp("index.jsp");
}
public void test()
{
render("test.html");
}
}
最后调用test时为什么访问不到调用/WEB-INF/template路径下的test.html文件呢?
me.setBaseViewPath("/WEB-INF/template")
你上面的代码应该也是可以的,但不如我建议的办法好