我在我一会儿模板,一个NullPointerException挣扎着,所以我希望这里有人能阐明我的问题有些光一直没能找到任何在线帮助。
我创建了我自己的“基地控制器”,我的所有其他控制器扩展。 主控制器包含持有用户会话(不玩会话,但一个DB模式)的静态成员:
public class Home extends SessionController {
...
}
public class SessionController extends Controller {
protected static SessionDao siteSession;
}
我的问题...我需要这个静态会议成员传递给我的模板。 在首页我做到以下几点:
public class Home extends SessionController {
public static void index() {
render(siteSession);
}
}
然后在我的模板我做的:
${siteSession.search.query}
这将导致siteSession一个NullPointerException(我相信这是正确设置在控制器通过它来渲染()之前)。
我一直乱搞颇有几分设法得到以下工作:
public class Home extends SessionController {
public static void index() {
// Just setting mySession to siteSession
SessionDao mySession = siteSession;
render(siteSession);
}
}
然后在我的模板我做的:
${mySession.search.query}
请注意,我在模板中使用MySession的,我还通过siteSession渲染()在我的行动。 出于某种原因,这个工程,我让我的session对象,一切都很好,但是这并不能真的是去这样做的方式。 我不应该甚至可以在模板访问MySession的,因为它从未传递渲染()。
如果有人可以在此提供一些线索我会非常感激。
我首选的方案是让SessionController覆盖渲染和siteSession对象传递给模板引擎“自动”。 如果任何人有我如何去这样做,我将不胜感激,因为我曾尝试和无法获得对模板的任何和所有对象(此片段不工作)的任何建议:
public class Home extends SessionController {
public static void render(Object ... args) {
if (args == null) {
args = new Object[1];
}
args[args.length] = siteSession;
Controller.render(args);
}
}