要說@NoLayout,必須先說一下vaadin的server端產生state變化之後到了客戶端這邊,客戶端會假設server端任何關於state的改變都會引起客戶端組件的尺寸上的改變。但是有些情況並非如此,比如,當server端僅僅是更新了某個會被顯示在客戶端組件中的值,而並非客戶端組件尺寸(或佈局)。這時,在state中的那個僅僅用於改變客戶端組件的顯示值的成員變量就可以用@NoLayout來標註。這樣,那個成員變量的值發生改變時,客戶端不會去執行重新佈局這個步驟,而僅僅是獲得當前變化的值。
可以去看Vaadin7(7.6.8)中ProgressBarState類的源代碼,其中progressbar的state用了@NoLayout annotation。