我在項目中實現的MVP模型是Passive MVP。主持人提到了這個觀點。此外,演示者有一個視圖必須遵守的顯示界面。通過Presenter管理View中的錯誤和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();
}
這裏的疼痛是用於設置/清零輸入錯誤消息的方法。 由View實現的每個setXXXError()
將使對應的ErrorWidget
可見,並且也許還突出顯示相應的InputWidget
(通過將其標記爲紅色或某物)。相反,每個clearXXXError()
方法都會隱藏相應的ErrorWidget
,並從相應的InputWidget
中刪除高亮部分。 這樣,演示者不必明確處理CSS管理,從而將自身與CSS中的更改解耦。只有觀點不得不擔心它。
但是,這種方法最終導致接口中的錯誤相關方法過多。
我想到的另一種方法是在界面中公開ErrorWidget
。但是,GWT沒有HasCss
類型的接口,我不得不顯式指定窗口小部件的類型(比如一個Label),或者使用IsWidget
接口(它將再次暴露整個窗口小部件,而不僅僅是它的CSS屬性)。另外,在這種方法中,我將不得不在演示者中明確指定CSS修改。
對我的方法有沒有更好的選擇?或者我正在做的事情夠好嗎? 我也喜歡我目前的方法的任何改進。
你使用GWT編輯器框架呢?如果是這樣,請查看'HasEditorError'界面 - 如果每個控件都能夠顯示自己的錯誤,那麼您可以下放到那裏...... –