繁体   English   中英

通用控制器-播放框架

[英]generic controller - play framework

我将向您显示代码。 它会说的不止于言语。

基本型号:

import com.avaje.ebean.ExpressionList;
import com.avaje.ebean.Model;

import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class BaseModel extends Model {
@Id
public Long id;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public static <T extends Model> ExpressionList<T> find() {
    return null;
}
}

BaseController:

import com.avaje.ebean.ExpressionList;
import models.BaseModel;
import play.db.ebean.Model;
import play.libs.Json;
import play.mvc.Controller;

import javax.xml.transform.Result;

public class BaseController<T extends BaseModel> extends Controller {

private Model.Finder<Long,T> finder;

public  Result GetAll() {


    List<T> list = T.find().where().orderBy("name asc").findList();

    if (request().accepts("text/html")) {
        return ok(index.render(list));
    } else{
        return badRequest();
    }


    if (request().accepts("application/json")) {
        return ok(Json.toJson(list));
    } else {
        return badRequest();
    }
}

我的清单有问题

 List<T> data = T.find().where().orderBy("buildingTypeId asc").findList();

必填List <T>
找到的List<com.avaje.ebean.Model>

问题出在代码List<T> list = T.find().where().orderBy("name asc").findList(); findList()方法无法返回List<T>因为它不知道T的对应类型。 只有BaseController类知道它。

我试过了: List<T> list = finder.where().orderBy("name asc").findList(); 它有效,也许正是您所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM