我觉得Jato很优雅

02-11-14 iceant

我一直认为 Taglib 不应该滥用

用得少而精最好,大量的使用会带来维护和管理上的麻烦.

JATO 中的 taglib 用得非常精。

它用 Taglib 激发 ViewBean 的显示与视图事件。

举个例子

<jato:viewBean name="CustomerInfo">

<jato:text name="CustomerName"/>

</jato:viewBean>

这是在 JSP 中的 jato tag. 它是用来显示客户名称的一个 static text field.

当 JSP 解析到这个 tag 时,它会在 CustomerInfo ViewBean中触发一个

beginCustomerNameDisplay(Event e) 的事件.

于是,你可以在这个事件中先设置一下这个组件的属性,如给它附个值什么的.

另外再举一个例子。

<jato:viewBean name="CustomerInfoModify">

<jato:textField name="CustomerName"/>

<jato:button name="Submit"/>

</jato:viewBean>

当你点击 Submit 按钮时,在 CustomerInfoModifyViewBean 中会触发一个

handleSubmitRequest(Event e)的事件,于是,你就可以在那个方法中去实现

你的业务逻辑:

handleSubmitRequest(Event e){

String name = getDisplayFieldStringValue("CustomerName");

CustomerModel model = new CustomerModelImpl();

model.addUserWhereCondition(USER_NAME,name);

model.update();

// forward to this view and make it refresh

forward();

// Also you can redirect to other view by these code:

// ViewBean view = getViewBean(UpdateSuccessfulViewBean.class);

// view.forward(e.getRequestContext());

}

iceant
2002-11-14 20:06

我一直认为 Taglib 不应该滥用

用得少而精最好,大量的使用会带来维护和管理上的麻烦.

JATO 中的 taglib 用得非常精。

它用 Taglib 激发 ViewBean 的显示与视图事件。

举个例子

<jato:viewBean name="CustomerInfo">
  <jato:text name="CustomerName"/>
</jato:viewBean>
<p>

这是在 JSP 中的 jato tag. 它是用来显示客户名称的一个 static text field.

当 JSP 解析到这个 tag 时,它会在 CustomerInfo ViewBean中触发一个

beginCustomerNameDisplay(Event e) 的事件.

于是,你可以在这个事件中先设置一下这个组件的属性,如给它附个值什么的.

另外再举一个例子。

<jato:viewBean name="CustomerInfoModify">
  <jato:textField name="CustomerName"/>
  <jato:button name="Submit"/>
</jato:viewBean>
<p>

当你点击 Submit 按钮时,在 CustomerInfoModifyViewBean 中会触发一个

handleSubmitRequest(Event e)的事件,于是,你就可以在那个方法中去实现

你的业务逻辑:

handleSubmitRequest(Event e){
  String name = getDisplayFieldStringValue("CustomerName");
  CustomerModel model = new CustomerModelImpl();
  model.addUserWhereCondition(USER_NAME,name);
  model.update();
  // forward to this view and make it refresh
  forward();
  // Also you can redirect to other view by these code:
  // ViewBean view = getViewBean(UpdateSuccessfulViewBean.class);
  // view.forward(e.getRequestContext());
}
<p>

注:这里的代码只是未例,不是真正的 JATO 代码

banq
2002-11-15 11:34

iceant兄,你能不能多讲点Jato,特别是和其它体系如Struts 或petstore的区别?

zingers
2002-11-16 19:39

IBM上的好文章

iceant
2002-11-17 01:54

我对 Struts 不是很熟,怕写出来班门弄斧。^_^

前几天,我到 jakarta 的主页上去看过,Struts 的文档,比以前的要好了很多,详细了很多。改天,我好好看看.

我的印象是 Struts 是从一个 taglib 的项目起家的,而且是紧跟 PetStore 的设计思路(毕竟 PetStore 比 Struts 出现得早).

JATO 我第一眼看到它时,认为它设计得很脏,怎么把 ViewBean 和 JSP 绑得这么紧(在 ViewBean 里用 Hard Code 指定了 JSP 文件的路径),按照我自己的设计习惯,肯定是用一个 XML 文档做配置,实现视图表现(JSP)和视图逻辑(ViewBean)的分离,最少我觉得那样更加松耦合。

但是后来开始试用了一下,才发现,这是很有道理的.毕竟对于一个项目来说,有很多东西本来就是固定的。而且这样的固定减少了方案选择的时间,开发起来更快(谁不希望多些时间陪 GF 吃饭呢 ^_^).另外,替换一个XML配置和替换一个 JSP 文件,没有多大区别!

我的感觉就是,需要的配置太多,并不是一件好事,这带来了管理上的成本,很有必要在灵活性与成本上做个权衡. 对于灵活性,我认为必须要有相应的可视化辅助工具出现,才能适合大规模的应用,而开发这样的工具需要一定的成本!!!

Struts 已经有一些可视化工具出现,这是它以后广泛应用的基础。

JATO 更领先 Struts 已经出现商业化的开发工具(SUN ONE Application Framework)

BTW: Apusic 也有相应的解决方案,Apusic BOS.