2013-04-02 16 views
6

我正在爲播放子項目功能進行更多擴展測試,如此處所述:http://www.playframework.com/documentation/2.0/SBTSubProjects。但我得到的錯誤:資產已被定義爲對象資產

Assets is already defined as object Assets 

託管在GitHub上的示例應用程序:https://github.com/adis-me/PlayStrap

這裏描述我已經定義了一個資產控制器我子項目:Asset Controller description,甚至爲主營項目,但錯誤不斷彈出。我的項目出了什麼問題?

控制器

package com.company.playstrap.controllers; 

import controllers.AssetsBuilder; 

public class Assets { 

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

} 

routes文件

# 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) 

回答

5

這是一個已知的bug:https://groups.google.com/forum/#!msg/play-framework/2Zk5wjAlIng/Jcec1lt7AzQJ

我爲自己的管理模塊的解決方法:

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

這意味着所有(反轉路由東西)在視圖中需要寫入如:'@ routes.Assets.asset(「someAss」)'?這個錯誤是否已修正,我找不到這個問題的任何錯誤報告... – adis

1

上週我遇到了這個問題,當時我正在嘗試將Assets類作爲Java類編寫。我可以解決編制問題寫在我的輔助模塊中的資產類作爲斯卡拉類,以同樣的方式作爲對文檔描述:http://www.playframework.com/documentation/2.1.1/SBTSubProjects

基本上,我的項目的結構是:

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


Assets.scala內容:

package controllers.contabil 

object Assets extends controllers.AssetsBuilder 


最後,我admin.routes文件的內容是:

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

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


乾杯