32.2. <ajax:action>

可为父构件增加客户端事件侦听器,在父构件产生相应客户端事件时向服务器发送一个ajax请求,调用指定的服务器端方法。

从另一个角度说,使用AjaxAction使得服务器端具备了监控客户端事件的能力。当被监控的客户端事件被触发时,服务器端将有机会执行相应的逻辑代码。

32.2.1. 构件信息

表 32.2. 构件信息

Component Typeorg.operamasks.faces.component.ajax.AjaxAction
Component Familyjavax.faces.Command
Component Classorg.operamasks.faces.component.ajax.AjaxAction
Tag Classorg.operamasks.faces.webapp.ajax.AjaxActionTag
Renderer Typeorg.operamasks.faces.component.ajax.AjaxAction
Renderer Class(AJAX)org.operamasks.faces.render.ajax.AjaxActionRenderer

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++javax.faces.component.UICommand

+++++org.operamasks.faces.component.ajax.base.AjaxActionBase

++++++org.operamasks.faces.component.ajax.AjaxAction

32.2.2. 属性

表 32.3. 属性

action 定义类 javax.faces.component.UICommand
类型 javax.el.MethodExpression(javax.el.MethodExpression)
是否必须 延时求值
特定Action事件激活时调用的方法
actionListener 定义类 javax.faces.component.UICommand
类型 javax.el.MethodExpression(javax.el.MethodExpression)
是否必须 延时求值
特定ActionEvent事件激活时调用的方法
binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
event 定义类 org.operamasks.faces.component.ajax.AjaxAction
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
父构件需要被监控的客户端事件,常用的有onclick,onfocus,onblur,onchange,onselect等,具体请看每个构件的详细说明
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
immediate 定义类 javax.faces.component.UICommand
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
是否跳过验证
isAjaxSubmit 定义类 org.operamasks.faces.component.ajax.AjaxAction
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
Action提交的形式,默认是以ajax形式提交
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
value 定义类 javax.faces.component.UICommand
类型 java.lang.String
是否必须 延时求值
构件的当前值

32.2.3. 构件API

32.2.4. 例子

给w:button增加一个onclick客户端事件监听器。当点击w:button(产生客户端click事件)时,通过ajax方式调用服务器端DemoBean.processAction方法。

<w:button value="Click me">
  <ajax:action action="#{DemoBean.processAction}" event="onclick" />
</w:button>