??xml version="1.0" encoding="utf-8" standalone="yes"?>在线亚洲人成,国产精品视频二区三区,国产精品另类一区http://www.aygfsteel.com/jackyzhang/zh-cnSat, 17 May 2025 06:12:19 GMTSat, 17 May 2025 06:12:19 GMT60IoVC的组件属性绑?---@Bindhttp://www.aygfsteel.com/jackyzhang/archive/2008/02/24/181843.html张旭张旭Sun, 24 Feb 2008 15:03:00 GMThttp://www.aygfsteel.com/jackyzhang/archive/2008/02/24/181843.htmlhttp://www.aygfsteel.com/jackyzhang/comments/181843.htmlhttp://www.aygfsteel.com/jackyzhang/archive/2008/02/24/181843.html#Feedback6http://www.aygfsteel.com/jackyzhang/comments/commentRss/181843.htmlhttp://www.aygfsteel.com/jackyzhang/services/trackbacks/181843.htmllg属性绑?/h1>     我所接触到的ZJSF的Web应用中,位于UI界面上的一个界面元素或lgQ想要显C数据,通常的写法是q样Q?br /> greeting.xhtml
<h:inputText value="#{demo.helloduke.UserBean.name}"/>

demo.helloduke.UserBean.java:
@ManagedBean(name="demo.helloduke.UserBean", scope=ManagedBeanScope.SESSION)
public class UserBean {
    
private String name;
    
public String getName() {
        
return name;
    }
    
public void setName(String name) {
        
this.name = name;
    }
}

q样的写法意味着Q在greeting.xhtml中,需要知道UserBean的存在,q且需要知道UserBean的name属性是对应着q个inputTextlg的value。这在很大程度上Q限制了greeting.xhtml的作用范_(d)使这个UI完全没有Z(x)被重用。很长一D|_(d)q都是困照着我的一个问题?br />
Binding是IoVC包含的一个重要特性,它不仅可以UI独立出来Q而且Binding是采用后期绑定模式实玎ͼ为组件的无状态的实现提供了底层基支撑。关于IoVC的实现方式,在这随W中q不q多讨论?br /> 在IoVC的编E模式下Q对UI上的界面元素的控制力被{Ud了ManagedBean中,UI不需要关心谁在用它Q以?qing)数据的来源?br /> IoVC模式的Hello Duke的UI?qing)managedBean:
greeting.xhtml
<h:inputText id="name"/>

demo.helloduke.UserBean.java:
@ManagedBean(name="demo.helloduke.UserBean", scope=ManagedBeanScope.SESSION)
public class UserBean {
    @Bind
    
private String name;
}

@Bind标签Q提供了ManagedBean的filedl定到组件的attributes中的能力Q默认情况下Q@BindҎ(gu)所作用的filed的name来匹配UI中的元素的idQ然后将field的值取出绑定到对应的UI中的lg上,上述代码表示Q将UserBean中的name属性,l定C之对应的inputTextlg的value中?br />
下面列出了@Bind标签的典型用场景:(x)

    @Bind
    
private UIDataGrid grid;

    @Bind(id
="grid", attribute="width")
    
private int width;

    @Bind(id
="grid", attribute="height")
    
private int height;

    
public void initGrid() {
        
this.width = 500;
        
this.height = 400;
    }

    
public void reload() {
        
this.grid.reload();
    }

使用@Bind标签组件的attributes与ManagedBean中的属性一一l定h之后Q在UI上如果组件发生变化,其变化了的属性会(x)反映到ManagedBean中,同样Q在ManagedBean中,如果更改了属性|UIlg也会(x)发生相应的变化?br /> 一个用IoVC模式的完整页面与ManagedBeanQ其中涉?qing)到的其他标{,?x)在后面介绍刎ͼQ?br /> q行效果Q?br />

calc.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<f:view xmlns:f="http://java.sun.com/jsf/core"
        xmlns
="http://www.w3.org/1999/xhtml"
        xmlns:h
="http://java.sun.com/jsf/html"
        xmlns:w
="http://www.apusic.com/jsf/widget"
        renderKitId="AJAX">
  <w:page title="View Binding Example">
  
<h:form>
    
<h:panelGrid columns="1">
      
<h:inputText id="first"/>
      
<h:inputText id="second"/>
      
<h:outputText id="result"/>
    
</h:panelGrid>
    
<h:commandButton value="+" id="add"/>
    
<h:commandButton value="-" id="subtract"/>
    
<h:commandButton value="*" id="multiply"/>
    
<h:commandButton value="/" id="divide"/>
  
</h:form>
  
<h:messages/>
  
</w:page>
</f:view>
CalcBean.java:
@ManagedBean(scope=ManagedBeanScope.SESSION)
public class CalcBean
{
    @Bind
    private double first = 10;

    @Bind
    private double second = 20;

    @Bind
    private double result;

    @Bind(id
="result", attribute="style")
    
private String style;

    @Action
    
public void add() {
        result 
= first + second;
        style 
= "color:red";
    }

    @Action
    
public void subtract() {
        result 
= first - second;
        style 
= "color:green";
    }

    @Action
    
public void multiply() {
        result 
= first * second;
        style 
= "color:blue";
    }

    @Action
    
public void divide() {
        result 
= first / second;
        style 
= "color:black";
    }
}






张旭 2008-02-24 23:03 发表评论
]]>
什么是IoVChttp://www.aygfsteel.com/jackyzhang/archive/2008/02/24/IoVC.html张旭张旭Sat, 23 Feb 2008 17:15:00 GMThttp://www.aygfsteel.com/jackyzhang/archive/2008/02/24/IoVC.htmlhttp://www.aygfsteel.com/jackyzhang/comments/181688.htmlhttp://www.aygfsteel.com/jackyzhang/archive/2008/02/24/IoVC.html#Feedback3http://www.aygfsteel.com/jackyzhang/comments/commentRss/181688.htmlhttp://www.aygfsteel.com/jackyzhang/services/trackbacks/181688.html什么是IoVC
    IoVC?font class="post">Inversion of View Control的羃写,意思是视图反{控制Q是AOM的核心特性之一QIoVC实现了将对UI的控制力转移到ManagedBean中,UI完全不关心谁?x)来使用它本w,也不需要关心在上面所展现的数据内Ҏ(gu)什么,从而实CUI与控刉辑的完全分,a之,IoVC是一U更高层ơ的MVC?br />
    初一看,IoVC好像也没什么特别的Q甚xҎ(gu)늂作的嫌疑Q但是真正用它、理解它之后Q你?x)发玎ͼ它所提供的编E模型ؓ(f)你的开发带来了实质性的帮助?br />

IoVC带来了什?br />

    IoVC提供?#8220;l定”?#8220;多语a支持”?#8220;资源注入”?#8220;逻辑事g”{特性,q些Ҏ(gu)主要作用在ManagedBean上面QManagedBean是位于UI与业务服务之间的协调者,Zq些Ҏ(gu),在ManagedBean中,一斚w可以对UI实现完全的控Ӟ另一斚wQ可以灵z自然的与业务服务进行交互?br />

托管Bean的简?br />

    传统方式中,~写一个ManagedBeanQ需要编写faces-config.xml文gQ例如编写两个ManagedBeanQUserBean与DepartmentBeanQ其中UserBean需要引用DepartMentBeanQ需要采用下面的方式来声明faces-config.xml文g:
  <managed-bean>
    
<managed-bean-name>DepartmentBean</managed-bean-name>
    
<managed-bean-scope>session</managed-bean-scope>
    
<managed-bean-class>demo.DepartmentBean</managed-bean-class>
  
</managed-bean>

  
<managed-bean>
    
<managed-bean-name>UserBean</managed-bean-name>
    
<managed-bean-scope>session</managed-bean-scope>
    
<managed-bean-class>demo.UserBean</managed-bean-class>
    
<managed-property>
      
<property-name>departmentBean</property-name>
      
<property-class>demo.DepartmentBean</property-class>
      
<value>#{DepartmentBean}</value>
    
</managed-property>
  
</managed-bean>

    IoVC提供了@ManagedBean、@ManagedProperty、@MapEntries、@ListEntries{关于ManagedBean定义的一整套完整的标{,上面的定义,在IoVC中将?x){变ؓ(f)如下方式直接声明在代码中Q无需l护faces-config.xml文gQ?br />
@ManagedBean
public class DepartmentBean
{
    
}

@ManagedBean
public class UserBean
{
    @ManagedProperty(
"#{DepartmentBean}")
    
private DepartmentBean departmentBean;
    
}

关于IoVC剩余的几个特性的支持的描qͼ我将?x)陆l写一些文章来q行深入介绍?br />
在把“IoVC是什么、IoVC能够做什?#8221;q些基本问题解释清楚后,我计划探讨一?#8220;IoVC是怎么实现的?”Q以?#8220;Z么有了IoVC之后Q组件的无状态就可以变成可能Q?#8221;{问题?br />

l定QBindingQ?/h1>   

资源注入 QInjectionQ?/h1>   

多语a支持

   

逻辑事g

   

“无状态组?#8221;的传?/h1>

张旭 2008-02-24 01:15 发表评论
]]>记AOM2.0M1发布http://www.aygfsteel.com/jackyzhang/archive/2008/02/22/181523.html张旭张旭Fri, 22 Feb 2008 14:25:00 GMThttp://www.aygfsteel.com/jackyzhang/archive/2008/02/22/181523.htmlhttp://www.aygfsteel.com/jackyzhang/comments/181523.htmlhttp://www.aygfsteel.com/jackyzhang/archive/2008/02/22/181523.html#Feedback3http://www.aygfsteel.com/jackyzhang/comments/commentRss/181523.htmlhttp://www.aygfsteel.com/jackyzhang/services/trackbacks/181523.html
    AOM?.2Release是去q?2?0日发布的Q到现在已经2个多月了Q这期间Q包括AOM1.2Release发布之前Q,我们一直在q行AOM2.0的研发,l历了几ơPreview版本之后Q终于决定推出AOM2.0?br />
    q是一个跨式的版本,2.0?.x的差别,以致C无法兼容1.x的程度,q是我们设计上的pQ但是我ƣ慰的是?.0是一个基U式的版本,后箋发展?.x?.x也会(x)是兼?.x的,q在我看来,也未都是坏事?br />     
    回顾?.x中,lg的乏、过快的节奏、市场的压力Q得我无法专注于整个架构体pȝ设计Q在2.0开始的版本里面Q从lg入手Qɾlg的开发、设计Ş成一套真正的体系化的东西Q这在短期内看不C么效果,因ؓ(f)所有组件的外观q没有得到变化。甚至看h基本上没有什么工作成果,但是我知道、AOM里面的h也知道,我们的组件内部再也不是东D凑的Ҏ(gu)着js与html、css的؜合体了,虽然?.0M1中,我们只是重构了布局斚w的组Ӟ其他的组仉q是采用原有的方式,但是在后l版本中Q所有的lg都会(x)采用新的方式Q会(x)协同的很好?br />
    除了lgQ?.0的东西还真的很多Q今天在写ReleaseNotes的时候,我竟不知从何下笔Q关?.0的其他特性,我不?x)做怎样特别的介l,我只是把我当时包括以后同老袁一起做q些事情的感受写出来?br />
    AOM2.0M1我认为有H破的几个方面:(x)
   1. IoVC~程模型Q?br />    2. 无需l护状态(怿吗?Q;
   3. ZAPT的组件快速开发模式;

    最震撼的,莫过于老袁的ELiteQ这是对我媄响较大的一个事情(虽然我没有参与)Q让我明白了“U学?#8221;?#8220;E序?#8221;的区别,qg事情我不在这里过多的说了Q但我一定会(x)从头到尾把这件事情的来龙去脉讲清楚。包括它的生,构思与实现?br />

张旭 2008-02-22 22:25 发表评论
]]>
վ֩ģ壺 Ӽ| ¡| Ͷ| ͨ| ߺ| | ɽ| ¡| ݶ| | | | | | ɽ| ׳| | Զ| | | | ʳ| | Դ| | ֹ| Ѯ| | | Ž| ̨| ˼| Ӱ| | | ͨ| | | | | Ԫ|