2

ビジネスをタイプ別に表示するフィルター機能を実装しようとしています。これは、ユーザーが表示したいビジネスのタイプを選択できる「検索フォーム」です。

@(businessList: List[Business], formSearch: Form[Business])

@import helper._

@main("All businesses"){

@form(action=routes.Application.displayAllBusinesses("")){
     @select(formSearch("type"),options(Seq("Dining","Accomodation","Manufacturing","Retail", "Services")),'_label ->"Business Type",'_default->"--Select a business type--")

    <input type="submit" class="btn btn-success" value="Search by type">
    <a class="btn"  href="@routes.Application.displayAllBusinesses()">Show all businesses</a>
    <a class="btn" href="/registerBusiness">Register a business</a>
}

次に、すべてのビジネスを表示する for ループがあります。

<ul>
    @for(business <- businessList) {
        <li>
            <p>Business Name: @business.getName()</p>
            <p>Business Type: @business.getType()</p>
            <p>Business Email: @business.getEmail()</p>
            <p>Business Location: @business.getLocation()</p>
            <p>Business Description: @business.getDescription()</p>
            <p>Id is: @business.id </p>

           <a class="btn" href="@routes.Application.displayUpdateBusiness(business.id)">Update</a>
            @form(routes.Application.deleteBusiness(business.id)) {
                <input class="btn" type="submit" value="Delete"> 
            }
        </li>
    }
</ul>

ユーザーがフォームを送信すると、displayAllbusinesses ルートは次のようになります (ここでエラーが発生します)。

GET      /listBusinesses            controllers.Application.displayAllBusinesses(type: String ?= "all")  

app/Application.java の displayAllbusinesses メソッドは次のとおりです。

public static Result displayAllBusinesses(String type){
    List<Business> businesses;
    if(type=="all"){
        businesses = allBusinesses;
    } else {
        businesses = Business.find.where().like("type", type).findList();
        //TRACE
        System.out.println(businesses);
   }
   return ok(listBusinesses.render(businesses, businessForm));
}            

このコードを実行すると、/listBusinesses ルートに対して「不正な単純式の開始」が表示されます。これは何を意味するのでしょうか?

4

2 に答える 2

3

type は Scala の予約済みキーワードです。ルート コンパイラが適切にエスケープしていません。これは既知のバグだと思います。

于 2013-08-04T13:49:47.170 に答える
1

回答: ルートのタイプを大文字にしました

controllers.Application.displayAllBusinesses(Type: String ?= "all")

検索フォームを変更して、タイプも大文字にしました

@form(action=routes.Application.displayAllBusinesses("")){
 @select(formSearch("Type"),options(Seq("Dining","Accomodation","Manufacturing","Retail", "Services")),'_label ->"Business Type",'_default->"--Select a business type--")

それは今動作します。ゴーフィギュア

于 2013-08-04T12:57:21.900 に答える