jsf Action 与 ActionListener

来源:互联网 发布:淘宝女毛衣新款 编辑:程序博客网 时间:2024/06/09 16:57

  在jsf 中,这二个按钮是经常被使用到。简言之,Action 是 ActionListener 的一种简写。当ActionListener 中的参数(ActionEvent event),若不需要用到参数event 可以直接用 Action 而不需要ActionListener。

    action()处理的是业务逻辑.实际上JSF会自动产生一个"预设的ActionListener"来处理事件,并根据其返回值决定页面跳转.第五阶段:调用应用执行,    会影响到页面间的导航(navigation)。

     navigation

      <navigation-rule>
        <from-view-id>/Logon.jsp</from-view-id>
        <navigation-case>
            <from-outcome>true</from-outcome>
            <to-view-id>/Home.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>false</from-outcome>
            <to-view-id>/Error.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

    主要处理一些业务逻辑并返回几个业务逻辑结果(String类型),JSF的导航系统将会根据这个来选择恰当的下一个页面. 会提交表单.
       actionListener(ActionEvent e)处理页面上组件的"监听事件".第五阶段:调用应用执行,  不会影响到导航.主要操作当前页面内的组件,或者是进行一些业务模型上的改变,或者是修改backing bean(托管Bean)的属性等,并不会出现在页面间的跳转。会提交表单.
         valueChangeListener(ValueChangeEvent event)处理页面上组件值变化的"监听事件","第三阶段:验证请求值"执行
 注意:
      ActionListener (事件监听器)是用于解决只影响用户界面的事件 ,    特别地,在beans的form数据被加载和触发验证前被调用 , 用immediate=“true”指明这个行为不触发验证 , 在监听器调用后,会重新显示表单 , 不应用导航规则,不重定向页面
   Action   隶属于按钮、超链接和图形映射控件,自动提交对应表单 。
   ValueChangeListener    隶属于单选框、组合框、列表框、复选框、文本框等控件,需要用onclick=“submit()”或onchange=“submit()”的方式提交表单

      <h:form id="LanguageForm">
                        <h:selectOneMenu  onchange="this.form.submit();" immediate="true"   valueChangeListener="#{logon.changeLocale}">
                            <f:selectItem itemLabel="简体中文" itemValue="zh_CN"/>
                            <f:selectItem itemLabel="English" itemValue="en_US"/>
                        </h:selectOneMenu>
                    </h:form>

   以上是我个人总结,并结合了网上的资料(谢谢)。以后自己查资料就方便多了阿

 

原创粉丝点击