1 根据参数 跳转
//IResourceLocation rootLocation = Tapestry.getApplicationRootLocation(cycle).getRelativeLocation("/WEB-INF/");
IResourceLocation rootLocation = Tapestry.getApplicationRootLocation(cycle).getRelativeLocation("/");
//_applicationIsExplodedWAR = rootLocation.getResourceURL().toString().startsWith("file:");
//if (_applicationIsExplodedWAR) {
_realRootFolder = cycle.getRequestContext().getServlet().getServletContext().getRealPath("/");
_locator = new RecursiveFileLocator(rootLocation,_realRootFolder);
_specificationSource = cycle.getEngine().getSpecificationSource();
//}
_initialized = true;
IResourceLocation location = _locator.resolveLocation(name+".page");
if (location != null) {
return _specificationSource.getPageSpecification(location);
}
2
要牢记,在页面对象中存在实例变量通常是危险的。只要看到它们,多半应该用一个initialize()方法将他们清空或清零。另外一个选择是,你可以让Tapestry为你做所有的那些工作
原因:一个用户将看到另一个用户的结果。怎么发生的呢?因为页面对象用过后,Tapestry不会把它丢掉,而是放入一个池中以便重复利用。随后,当再次需要使用Result页面对象时,它将检查池中有没有。如果有,就把它从池中取出并使用。仅当池中没有这样的页面对象时它才将创建一个新的页面对象。