Модель MVP, которую я реализовал в моем проекте, - это Passive MVP. Ведущий имеет ссылку на представление. Кроме того, презентатор имеет интерфейс отображения, который должен соблюдать вид.Управление ошибками и CSS в представлении через презентатор
Мой текущий интерфейс дисплея, как показано ниже -
public interface Display {
Widget asWidget();
<Control extends HasValue<String> & HasBlurHandlers> Control code();
<Control extends HasValue<String> & HasBlurHandlers> Control name();
<Control extends HasValue<String> & HasBlurHandlers> Control address();
<Control extends HasValue<String> & HasBlurHandlers> Control contactNumber1();
<Control extends HasValue<String> & HasBlurHandlers> Control contactNumber2();
<Control extends HasValue<String> & HasBlurHandlers> Control email();
<Control extends HasValue<String> & HasBlurHandlers> Control registrationNumber();
<Control extends HasValue<String> & HasBlurHandlers & HasEnabled> Control registrationYear();
HasClickHandlers saveControl();
HasClickHandlers cancelControl();
void setCodeError(String message);
void setNameError(String message);
void setAddressError(String message);
void setContactNumber1Error(String message);
void setEmailError(String message);
void setRegistrationNumberError(String message);
void clearCodeError();
void clearNameError();
void clearAddressError();
void clearContactNumber1Error();
void clearEmailError();
void clearRegistrationNumberError();
}
Боль здесь методы, используемые для установки/ясные сообщения об ошибках ввода. Каждый setXXXError()
, реализованный в представлении, сделает видимым соответствующее изображение ErrorWidget
, и, возможно, также выделит соответствующий InputWidget
(отметьте его красным или что-то еще). И наоборот, каждый метод clearXXXError()
скроет соответствующий ErrorWidget
и удалит выделение из соответствующего InputWidget
. Таким образом, ведущий не должен явно заниматься управлением CSS, тем самым отделяя себя от изменений в CSS. Только мнение должно беспокоиться об этом.
Однако этот подход оказался в слишком многих связанных с ошибкой методах в интерфейсе.
Альтернативный подход, который, как я думал, заключается в том, чтобы разоблачить интерфейс ErrorWidget
. Но GWT, не имеющий интерфейса HasCss
, должен был либо явно указывать тип виджетов (скажем, ярлык), либо использовать интерфейс IsWidget
(который снова выведет весь виджет, а не только его свойства CSS). Кроме того, в этом подходе я должен был бы явно указать модификации CSS в презентаторе.
Есть ли лучшая альтернатива моему подходу? Или что я делаю, достаточно хорошо? Мне также понравились бы улучшения в моем нынешнем подходе.
Вы используя Рамку редактора GWT? Если это так, проверьте интерфейс 'HasEditorError', если каждый элемент управления способен отображать собственные ошибки, вы можете просто делегировать туда ... –