2013-12-04 3 views
0

Я хочу передать форму из вложенного контроллера в представление.Playframework load Form from inested Controller

Вот мои настройки:

app 
| 
--controllers 
     | 
     --appointment 
       | 
       -- Appointment.java 


| 
-- views 
     | 
     -- appointment 
       | 
       -- create.scala.html  

Маршрут:

# Appointment 
GET /appointment/create   controllers.appointment.Appointment.create() 
POST /appointment    controllers.appointment.Appointment.validate() 

Назначение Класс:

public class Appointment extends Controller { 

public static Result create() { 
    List<Procedure> procedures = Procedure.find.all(); 
    List<Employee> doctors = Employee.find.where().eq("role", "doctor").findList(); 
    return ok(create.render(Form.form(CreateAppointment.class), procedures, doctors)); 

} 

public static Result validate(){ 
    Form<CreateAppointment> registerForm = Form.form(CreateAppointment.class).bindFromRequest(); 

     return badRequest(create.render(registerForm)); 
} 

public static Result edit(Integer id) { 
    return TODO; 
} 

public static Result delete(Integer id) { 
    return TODO; 
} 

public static Result all() { 
    return TODO; 
} 

public static class CreateAppointment { 

    public Date endDate; 
    public Date startDate; 

    public String reason; 

    public String validate() { 
     if (startDate.after(endDate)) 
      return "End date must be after start Date"; 

     return null; 
    } 

} 

}

create.scala.html

@(form: Form[controllers.appointment.routes.Appointment.CreateAppointment],procedures: List[Procedure],doctors: List[Employee]) 
    <html> 
    <head> </head> 
    <body> 

    @helper.form(controllers.appointment.routes.Appointment.create) { 

Проблема заключается здесь ->form: Form[__ROUTE___] Проблема в том, я не знаю, как правильно пройти CrateAppointment.

Я пробовал:

controllers.appointment.routes.Appointment.CreateAppointment 
Appointment.CreateAppointment 
ppointment.Appointment.CreateAppointment 

я получаю ошибку

[error] MyPath\app\views\appointment\create.scala.html:1: type CreateAppointment is not a member of controllers.appointment.ReverseAppointment 

ответ

1

В PlayFramework каждый пакет контроллеров имеет свой собственный пакет маршрутов. Например, URL вы ищете один из двух следующих маршрутов:

controllers.appointment.routes.Appointment.create() 
controllers.appointment.routes.Appointment.validate() 
+0

казалось нормально, но, [ошибка] C: \ Users \ User \ USI-SEM \ приложение \ вид \ назначение \ создать. scala.html: 0: type cr eate не является членом controller.appointment.ReverseAppointment [ошибка] C: \ Users \ User \ USI-SEM \ app \ views \ назначение \ create.scala.html: 1: type cr eate не является членом controller.prointment.ReverseAppointment [error] @ (form: Form [controllers.appointment.routes.Appointment.create], processur es: List [Procedure], doctor: List [Employee]) || измененная строка теперь '@ (form: Form [controllers.appointment.routes.Appointment.create], процедуры: Список [Процедура], врачи: Список [Сотрудник])' – q99

+0

Попробуйте с подтверждением. –

+0

он должен «съесть» внутренний класс формы, а не метод, но в любом случае это не работает – q99