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 Ivan