2013-04-02 13 views
6

Robię bardziej rozbudowane testy funkcji podprojektów Play, jak opisano tutaj: http://www.playframework.com/documentation/2.0/SBTSubProjects. Ale otrzymuję błąd:Zasoby są już zdefiniowane jako obiekty Zasoby

Assets is already defined as object Assets 

przykładową aplikację hostowane na github: https://github.com/adis-me/PlayStrap

mam zdefiniowaną kontrolera atut dla moich podprojektów, jak opisano tutaj: Asset Controller description, nawet dla głównego projektu, ale błąd utrzymuje wyskakiwać. Co jest nie tak z moim projektem? złożyć

Controller

package com.company.playstrap.controllers; 

import controllers.AssetsBuilder; 

public class Assets { 

    public static controllers.AssetsBuilder delegate = new AssetsBuilder(); 

} 

Trasy

# Routes 
# This file defines all application routes (Higher priority routes first) 
# ~~~~ 

# Home page 
GET /        com.company.playstrap.controllers.Application.index() 

# Include sub projects 
-> /common        common.Routes 
-> /admin        admin.Routes 
-> /website        website.Routes 

# Map static resources from the /public folder to the /assets URL path 
GET  /assets/*file     com.company.playstrap.controllers.Assets.delegates.at(path="/public", file) 

Odpowiedz

5

Jest to znany bug: https://groups.google.com/forum/#!msg/play-framework/2Zk5wjAlIng/Jcec1lt7AzQJ

Moja obejście własnym module Admin:

package controllers.admin; 
import controllers.AssetsBuilder; 
import play.api.mvc.AnyContent; 
import play.api.mvc.Action; 
import play.mvc.*; 

public class Application extends Controller { 

    private static AssetsBuilder delegate = new AssetsBuilder(); 

    public static Action<AnyContent> asset(String path, String file) { 
     return delegate.at(path, file); 
    } 

} 

//routes file 
GET /assets/*file controllers.admin.Application.asset(path="/public", file) 
+0

Oznacza to, że wszystkie (odwrócone rzeczy routing) w widokach musi być napisany as: '@ routes.Assets.asset (" someAss ")'? Czy ten błąd został naprawiony, nie mogę znaleźć żadnego zgłoszenia błędu dla tego problemu ... – adis

1

Napotkałem ten problem w zeszłym tygodniu, kiedy próbowałem napisać klasę Assets jako klasę Java. Mogę rozwiązać problem kompilacji pisanie klasę aktywów w moim modułem jako klasa Scala, w ten sam sposób, jak opisano na docs: http://www.playframework.com/documentation/2.1.1/SBTSubProjects

Zasadniczo struktura mojego projektu jest:

MyApplication 
    | - app 
    | - conf 
    | - modules 
     | - admin 
      | - app 
       | - controllers 
        | - admin 
         | - Assets.scala 
    | - project 
    | - public 


Assets.scala treść:

package controllers.contabil 

object Assets extends controllers.AssetsBuilder 


I wreszcie, treść moich admin.routes plik jest:

GET  /assets/*file controllers.admin.Assets.at(path="/public", file) 

# Home page 
GET  /index   controllers.admin.Application.index() 


Cheers