所以我对play-computer-database-java激活器模板进行了一线调整
模特:
计算机:
package models;
import java.util.*;
import javax.persistence.*;
import play.db.ebean.*;
import play.data.format.*;
import play.data.validation.*;
import com.avaje.ebean.*;
/**
* Computer entity managed by Ebean
*/
@Entity
public class Computer extends Model {
private static final long serialVersionUID = 1L;
@Id
public Long id;
@Constraints.Required
public String name;
@Formats.DateTime(pattern = "yyyy-MM-dd")
public Date introduced;
@Formats.DateTime(pattern = "yyyy-MM-dd")
public Date discontinued;
@Constraints.Required
@ManyToOne
public Company company;
/**
* Generic query helper for entity Computer with id Long
*/
public static Finder<Long, Computer> find = new Finder<Long, Computer>(Long.class, Computer.class);
/**
* Return a page of computer
*
* @param page Page to display
* @param pageSize Number of computers per page
* @param sortBy Computer property used for sorting
* @param order Sort order (either or asc or desc)
* @param filter Filter applied on the name column
*/
public static Page<Computer> page(int page, int pageSize, String sortBy, String order, String filter) {
return find.where()
.ilike("name", "%" + filter + "%")
.orderBy(sortBy + " " + order)
.fetch("company")
.findPagingList(pageSize)
.setFetchAhead(false)
.getPage(page);
}
}
公司
package models;
import java.util.*;
import javax.persistence.*;
import play.db.ebean.*;
import play.data.validation.*;
/**
* Company entity managed by Ebean
*/
@Entity
public class Company extends Model {
private static final long serialVersionUID = 1L;
@Id
public Long id;
@Constraints.Required
public String name;
/**
* Generic query helper for entity Company with id Long
*/
public static Model.Finder<Long, Company> find = new Model.Finder<Long, Company>(Long.class, Company.class);
public static Map<String, String> options() {
LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();
for (Company c : Company.find.orderBy("name").findList()) {
options.put(c.id.toString(), c.name);
}
return options;
}
}
和控制器
package controllers;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;
import views.html.*;
import models.*;
/**
* Manage a database of computers
*/
public class Application extends Controller {
/**
* This result directly redirect to application home.
*/
public static Result GO_HOME = redirect(
routes.Application.list(0, "name", "asc", "")
);
/**
* Handle default path requests, redirect to computers list
*/
public static Result index() {
return GO_HOME;
}
/**
* Display the paginated list of computers.
*
* @param page Current page number (starts from 0)
* @param sortBy Column to be sorted
* @param order Sort order (either asc or desc)
* @param filter Filter applied on computer names
*/
public static Result list(int page, String sortBy, String order, String filter) {
return ok(
list.render(
Computer.page(page, 10, sortBy, order, filter),
sortBy, order, filter
)
);
}
/**
* Display the 'edit form' of a existing Computer.
*
* @param id Id of the computer to edit
*/
public static Result edit(Long id) {
Form<Computer> computerForm = form(Computer.class).fill(
Computer.find.byId(id)
);
return ok(
editForm.render(id, computerForm)
);
}
/**
* Handle the 'edit form' submission
*
* @param id Id of the computer to edit
*/
public static Result update(Long id) {
Form<Computer> computerForm = form(Computer.class).bindFromRequest();
if (computerForm.hasErrors()) {
return badRequest(editForm.render(id, computerForm));
}
computerForm.get().update(id);
flash("success", "Computer " + computerForm.get().name + " has been updated");
return GO_HOME;
}
/**
* Display the 'new computer form'.
*/
public static Result create() {
Form<Computer> computerForm = form(Computer.class);
return ok(
createForm.render(computerForm)
);
}
/**
* Handle the 'new computer form' submission
*/
public static Result save() {
Form<Computer> computerForm = form(Computer.class).bindFromRequest();
if (computerForm.hasErrors()) {
return badRequest(createForm.render(computerForm));
}
computerForm.get().save();
flash("success", "Computer " + computerForm.get().name + " has been created");
return GO_HOME;
}
/**
* Handle computer deletion
*/
public static Result delete(Long id) {
Computer.find.ref(id).delete();
flash("success", "Computer has been deleted");
return GO_HOME;
}
}
唯一的补充是将@ Constraints.Required添加到计算机模型的公司字段中,以便在不将计算机附加到公司的情况下不应添加计算机,但是该字段未在表单中进行验证,如果没有公司,计算机仍然会被添加。这是一个错误还是我做错了什么