2. Редактор контента

Создаем новый класс для редактора:

ROOT/WEB-INF/src/custom/MeetingEditor.java

Жизненный цикл редактора обрабатывается Jease, так что вам не нужно беспокоится об этом:

  • #init() вызывается для создания формы редактора с указанным порядком полей.
  • #load() вызывается для загрузки полей формы редакторы с соответствующими значениями из персистентного (или вновь созданного) контент-объекта.
  • #validate() вызывается для валидации переданных значений полей формы редактора.
  • #save() вызывается для переноса значений из полей формы редактора в обратно в контент-объект.

Вы можете получить ссылку на выделенный в настоящий момент контент-объект методом #getNode() из ContentEditor.

package custom;

import jease.cms.web.content.editor.ContentEditor;
import jfix.zk.Datetimefield;
import jfix.zk.RichTextarea;
import jfix.zk.Textfield;

public class MeetingEditor extends 
                    ContentEditor<Meeting> {

 RichTextarea topic = new RichTextarea();
 Textfield location = new Textfield();
 Datetimefield start = new Datetimefield();
 Datetimefield stop = new Datetimefield();

 public MeetingEditor() {
 }

 public void init() {
  add("Topic", topic, "Введите название встречи");
  add("Location", location);
  add("Start", start);
  add("Stop", stop);
 }

 public void load() {
  topic.setText(getNode().getTopic());
  location.setText(getNode().getLocation());
  start.setDate(getNode().getStart());
  stop.setDate(getNode().getStop());
 }

 public void validate() {
  validate(topic.isEmpty(), "не введено название!");
  validate(location.isEmpty(), "не введена дата!");
  validate(start.isEmpty() || stop.isEmpty(),
     "Не введена дата!");
  validate(start.getValue().after(stop.getValue()), 
      "не верный формат даты");
 }

 public void save() {
  getNode().setTopic(topic.getText());
  getNode().setLocation(location.getText());
  getNode().setStart(start.getDate());
  getNode().setStop(stop.getDate());
 }
}

Last modified on 2011-10-08 by Maik Jablonski