4/29/2010

Tapestry 5 block concept

基本上block是一種元件它能夠集合靜態文字、html elements、元件,用來定義此區塊能夠有什麼樣式(UI)。似乎還是很複雜不如把它看成div區塊,tapestry想法透過定義block讓開發者能夠簡易操控於畫面上,並且重覆使用block物件來layout畫面。

當然我們可視block是组件部分模板的容器。block並不會正常被呈现(render),而且被放在block元件也都不會被呈现。只能透過注入block來呈現因此開發者可自行決定利用程式決定何時呈現block於畫面上。

範列如下:

java程式 demo.java

import org.apache.tapestry5.Block;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;

public class Demo {

	@Inject
	private Block fail, success;

	@Property
	@Persist("flash")
	private Block blockToRender;

	@Property
	private boolean isLogin;

	@OnEvent(value = "login")
	void onLogin() {

		//isLogin = loginProcess(...);

		blockToRender = isLogin ? success : fail;

	}

}

demo.tml



 login





    
login fail !

login success !

執行結果:


login
login fail !

Block是非常有用物件,能夠降低UI複雜度提升UI呈現簡易度,當然還需要配合tapestry相關元件(Zone, MultiZone)會更強大。

No comments:

Post a Comment