をレンダリングするために渡された静的メンバを再生します私の問題の光。は、私はしばらくの間、私のテンプレートでNullPointerExceptionで苦労してきたと私はここで誰かがいくつかを当てることができることを願っていますので、オンラインで任意のヘルプを見つけることができていないフレームワークテンプレートエンジン、原因NullPointerExceptionが
私はすべての私の他のコントローラが拡張私自身の「ベースController」を作成しました。私は私のテンプレートに、この静的なセッションメンバーを渡す必要が ...私の問題に
public class Home extends SessionController {
...
}
public class SessionController extends Controller {
protected static SessionDao siteSession;
}
: ベースコントローラは、ユーザーのセッション(いないプレイセッションが、DBモデル)を保持している静的メンバが含まれています。ホームで 私は次のようにします。
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を使用
${mySession.search.query}
注意をテンプレートと私はまだ私のアクションでrender()にsiteSessionを渡します。何らかの理由でこれが機能し、セッションオブジェクトが取得され、すべて正常ですが、これは実際にこれを行う方法にはなりません。レンダリング()に渡されたことがないので、テンプレート内の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);
}
}
こんにちは、。どうもありがとう。あなたが言うように、それはまだmySession突然のすべてが使用可能ですが、siteSessionあなたは、少なくともテンプレートでアクセスsiteSessionを作ったことを提案方法追加した理由を説明しません。 – polythene
ドキュメントとして、私がdocumentSessionを渡すことができないことを知っていたので、レンダリングにローカル変数だけを渡すことができると明示的に言いました。 – polythene
次の作業を行いますか?SessionDao localSiteSession = siteSessionを宣言してからrenderArgsに渡します – emt14