0

個別のモバイルビューとデスクトップビューのメソッドtemplate()をオーバーライドしたいと思います。訪問者がモバイルを使用しているかどうかを知るために、mvc.Controllerに新しいメソッド(isMobile())を作成しました。

isMobile()は、モバイルの場合はtrueを返します。

template()で、isMobile()を呼び出し、trueが返された場合は、パスを変更します。

通常、これは機能するはずです。しかし、違います。テンプレートメソッドを破棄しても、アプリケーションはとにかく動作します。

アプリを停止して再起動しようとしましたが、アプリは引き続き機能します。

ありがとう

編集:わかりました。変更を保存するためにプレイライブラリを再コンパイルする方法を知る必要があると思います。

4

1 に答える 1

2

フレームワークコアコードへの変更を再コンパイルする場合は、フレームワークフォルダーに移動し、「ant」と入力します。

https://github.com/greenlaw110/playで私のフォーク(1.2.5RC3に更新)をチェックアウトすることもできます。

次のコードをコントローラーのいずれかに追加します。

@OnApplicationStart
public static class BootLoader extends Job<Object> {
    @Override
    public void doJob() {
        Controller.registerTemplateNameResolver(new ITemplateNameResolver(){
            @Override
            public String resolveTemplateName(String templateName) {
                // replace the following statement with your user agent detect logic
                return UserAgent.isMobile() ? "mobile/" + templateName : templateName;
            }
        });
    }
}

git checkout 1.2.x私のフォークのクローンを作成した後cd framework;ant、コンパイルするようにしてください。

于 2012-05-16T20:27:45.973 に答える