JSF标签里常用一个属性Converter,对应javax.faces.convert.Converter这个接口,它只有两个方法,public Object getAsObject(FacesContext context, UIComponent component, String value)和public String getAsString(FacesContext context, UIComponent component, Object value),本文要讨论的是,这两个方法什么时候被调用,如何调用的。
为了更好的说明,我们使用rich:listShuttle,当listShuttle渲染页面时,调用getAsString,当listShuttle发生值修改时,调用getAsObject来恢复Vo,但这个Vo肯定不是原来Managed-Bean里面的Vo了,因此,在这步完成后,JSF调用equals方法,来查看,getAsObject获得的Vo应该对应的是那个逻辑Bean,最后修改找到的这个Bean来修改逻辑业务,从而完成从渲染显示,到用户通过修改基本类型修改数据,然后到修改数据获取,最后返回到逻辑业务层的整个过程。
此时,还有一个问题,有人也许会发现,当它为生成Vo寻找逻辑Bean时,如果找不到,就会直接终止,不会再去搜索后面的Vo了。
没有评论:
发表评论