Play2.5 使用子工程 以及子工程的静态资源

摘要:Play2.5 中已经大量使用Guice注入,连2.3中的GlobalSetting都舍弃了。有了比较大的变化,其中最大的一个变化就是路由生成的变化,在2.3中只有staticRouteGenerator 一种静态路由生成方法,在2.4中已经加入了InjectedRouteGenerator 注入路由生成方式,但默认的方式还是staticRouteGenerator ,在2.5中默认的路由方式已经是注入方式了。


一、 建立具有子工程的项目

1. 首先新建一个play-java类型的项目,使用最新的activator的话默认的play版本是2.5.3 . 在项目根目录下建立一个modules 文件夹,在该文件夹下 建立一个名为common的工程、


2. 先把common工程中build.sbt中的 lazy val root = (project in file(".")).enablePlugins(PlayJava) 删掉。在sbt.version =0.13.5 下可以不用删除 但是如果sbt的版本高于此版本的话,要删掉 子工程的此处定义,不然会报错 No project found in root. 


3.修改common工程conf目录下的routes 改名为 common.routes。此外为了防止类名冲突,最好将子工程app、views下的文件重新放入到另外的pacakge下。

4、修改父工程下的route文件 添加  ->    /common       common.routes   使其指向子工程路由


5、修改父工程的工程定义文件 build.sbt ,定义子工程

lazy val common =(project in file("modules/common")).enablePlugins(PlayJava)

lazy val root = (project in file(".")).enablePlugins(PlayJava)
			  .aggregate(common).dependsOn(common)

最后使用 localhost:9000/common 测试一下


二、  子工程中使用静态文件

 1、如前所述play2.5 的路由生成已经变化,在play.2.5中已经不存在 contollers.Assets类的静态at方法了。使用Assets需要注入其实现类(play已经实现)。就像controller 路由一样,子工程使用静态文件需要使静态文件的路由指向一个返回路由的类方法。 在2.5中如下

package controllers.common;
import com.google.inject.Inject;
import controllers.Assets.Asset;
import play.api.mvc.Action;
import play.api.mvc.AnyContent;
import play.mvc.Controller;

public class Assets extends Controller {
	@Inject
	controllers.Assets  asset;   //注入实现类
	public Action<AnyContent> versioned(String path,Asset file){
		return asset.versioned(path,file); //也可以使用at方法		
	}
}
common的路由如下 :
GET     /assets/*file       controllers.common.Assets.versioned(path="<span style="color:#FF0000;">/public/lib/common</span>", file: Asset)
注意子工程的 path 这里跟2.3不一样,需要”publi/lib/“+子工程名,file要为Asset类型

2、反向路由使用

 在模版文件中可以这样使用

<script src="@controllers.common.routes.Assets.versioned("javascript/bootstrap.min.js")"></script>


备注:如果在views包下新建一个common文件夹,在其中有一个 home.scala.html文件的,那么在controller中这样
调用  views.html.common.home.render("common")




  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值