我設置了我的第一個Vaadin應用與Vaadin 7.5.6和官方Vaadin春天1.0.0。我想使用MVP模式,但我問自己如何組件一起工作。因爲我是MVP的新手,我不想使用任何插件,所以我試圖自己設置它。MVP結構
所以如果我是對的,LoginViewPresenter會給我presenterInstance.getView()的視圖。這已經運行良好,但我應該如何通過視圖訪問主持人?當我想爲我的觀點做一個邏輯操作時,我應該在演講者班上做。但是如何從視圖Buttonclicklistener中調用一個演示者方法?
我的第二個問題是,如果我有我的演示者類的UIScope註釋,什麼時候Spring從這個類實例化一個新的對象?只要UI存在,我就會努力。但是在構造函數中生成一個隨機字符串後,我打印出randomString變量的內容(在UI.class init()方法中),但總是有一個新值。
問候
LoginViewPresenter.java
@SpringComponent
@UIScope
public class LoginViewPresenter implements Serializable
{
private static final long serialVersionUID = 6286518141570430211L;
@Autowired
private LoginView view;
public final String randomString;
public LoginViewPresenter()
{
randomString = Utils.generateRandomString(8);
}
@PostConstruct
public void init()
{
}
public LoginView getView()
{
return view;
}
public void setView(LoginView view)
{
this.view = view;
}
}
LoginView.java
@SuppressWarnings("serial")
@UIScope
@SpringView(name = LoginView.NAME)
public class LoginView extends VerticalLayout implements View
{
public static final String NAME = "LoginView";
@PostConstruct
private void init()
{
}
@Override
public void enter(ViewChangeEvent event)
{
}
}
謝謝您的回覆。你能告訴我在哪裏可以找到「ViewListener」類嗎? –
shinchillahh
對不起,我忘了刪除它,你不需要它。它是一個與viewInitialized的接口,我使用它,所以我不必在每個偵聽器中添加viewInitialized ...我編輯了我的答案。 –
..並且不要在您的演示者中注入視圖。當視圖對其偵聽器調用viewInitialized時,演示者將設置其視圖。 –