0

Play 2 フレームワークについて何か誤解していると思います。

私の Application Controller では、DB から Company オブジェクトを取得し、ビューでいくつかの操作を行いたいと考えています。

companyView.scala.html:

@(company: Company)

@main("Welcome to Play 2.0") { 
 <h1>@{company.name}</h1>

}

アプリケーション コントローラ:

package controllers;

import models.Company;
import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {

    public static Result company(String rest) {             
        Company company = 
                Company.find.where().ilike("restfulIdentifier.identifier", rest).findUnique();
        return ok(companyView.render(company));
    }   
}

ただし、文字列が必要return ok(companyView.render(company));なため、コンパイル エラーが発生companyView.renderします。

フォームのサンプル アプリケーションを見ると、次のようになります。

/**
     * Handle the form submission.
     */
    public static Result submit() {
        Form<Contact> filledForm = contactForm.bindFromRequest();

        if(filledForm.hasErrors()) {
            return badRequest(form.render(filledForm));
        } else {
            Contact created = filledForm.get();
            return ok(summary.render(created));
        }
    }

オブジェクトのレンダリングに問題はありません。解決策はかなり単純で、ドキュメントの重要な部分を見逃していると思います。これを私に説明してください!

4

2 に答える 2

1

この場合の私の手順は次のようになります。

  1. scala テンプレートを変更します。scala テンプレートCompanyに、モデル クラスに属していることを伝える必要があります (ただし@company.name、Jordan が提案するように変更します。

     @(company: models.Company)
    
     @main("Welcome to Play 2.0") { 
       <h1>@company.name</h1>
    
     }
    
  2. コマンドを実行play clean

  3. 次に実行しますplay debug ~run

実行play debug ~runすると、プロジェクト ファイルの 1 つの保存ごとに、play アプリケーションのコンパイルがトリガーされます。

注: Play テンプレートは基本的に関数です。これらの関数はコンパイルする必要があり、これらの関数で使用されるものはすべて使用前に宣言する必要があります。通常の Java 開発と同様です。

renderオブジェクトが文字列を必要としているという事実は、次の結果である可能性があります。

  • @(company: Company) を Company に解決できませんでしたmodel
  • 最後のコンパイルには @(company: String) がありました

幸運を!

于 2012-10-02T16:39:59.177 に答える
0

これで問題が解決するかどうかはわかりませんが、試してみる価値はあります。変更を削除してみてください:

@{会社名}

に:

@会社名

于 2012-10-02T15:39:11.587 に答える