转载:ajax4jsf常用标签的使用
和 ActionListener或者ValueChangeListener的工作方式一样, 只是仅用于AJAX容器. 添加一个指定的类作为AjaxEvent的监听器. (sent in case of an AJAX request for this container).
Table 4.1. a4j:ajaxListener attributes
|
type
|
注册到AjaxListener 中类的完全限定的Java类名
|
<a4j:region selfRendered="true" ajaxListener="#{bean.processAjax}" id="Region"> … </a4j:region>
当来自于Region的AJAX request触发时,将调用bean的'processAjax'方法.
a4j:region
该标签定义在AJax请求处理过程中被发送到服务器端解码的部分JSF组件树.
Table 4.2. a4j:region 的属性
|
selfRendered
|
如果为true,在调用应用程序(InvokeApplication )阶段自渲染子树(如果immediate 属性设置为true则是 Decode)
|
|
renderRegionOnly
|
标记,用来决定活动区域外的内容在Ajax响应中是否渲染.如果为"true" , 在AJAX response过程中活动区域外的组件都不渲染. 如果为"false", 将渲染包含在响应中的所有组件树.默认值为"true"
|
|
rendered
|
如果为 false, 该组件将不被重新渲染.
|
|
id
|
每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
|
|
immediate
|
如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)
|
|
binding
|
组件绑定
|
|
ajaxListener
|
方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 参数,返回void.
|
<a4j:region> <!--Some content--> <a4j:region>
如果在该组件的区域中有一个Ajax请求调用了 – 该区域将根据Ajax的设置被框架处理.
a4j:page
该组件呈现一个完全的HTML页面结构.它必须是view root (JSP <f:view> tag)的第一个(并且是仅有的一个)子组件. 没有Html代码可以在该组件的外面. 它也支持在Ajax请求中处理子组件,就和<a4j:region>一样.对于一个普通的请求,它将把结果呈现为在客户端页面<head>元素中的<script>元素.如果该组件包含一个"head" facet, 该facet的内容也呈现在<head>中.对于一个Ajax请求,在整个结构中仅仅涉及到的组件被呈现.下面是个在JSP (jspx version)中使用它的例子:
<jsp:root xmlns:....
<f:view>
<a4j:page>
<f:facet name="head">
...
</f:facet>
<!-- page content here -->
</a4j:page>
</f:view>
</jsp:root>
Table 4.3. a4j:page attributes
|
selfRendered
|
如果为true,在调用应用程序(InvokeApplication )阶段自渲染子树(如果immediate 属性设置为true则是 Decode)
|
|
lang
|
用来描述在产生该组件的markup时用到的语言(产生该组件标记所使用的语言)
|
|
title
|
该组件产生的Markup的title属性值
|
|
renderRegionOnly
|
renderRegionOnly
|
|
onunload
|
在页面unload时执行的JS代码
|
|
rendered
|
如果是 false, 该组件不会被呈现.
|
|
contentType
|
设置响应的自定义的mime内容类型
|
|
dir
|
文本方向
|
|
id
|
每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
|
|
styleClass
|
和HTML class 属性对应.
|
|
immediate
|
如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)
|
|
onload
|
在页面load时执行的JS代码
|
|
style
|
在该组件被呈现时应用的CSS style(s)
|
|
pageTitle
|
作为页面 title的字符串
|
|
binding
|
组件绑定.
|
|
ajaxListener
|
方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 参数,返回void.
|
<a4j:page> <f:facet name=”head”> … </f:facet> … <a4j:page>
上面的示例结构将被呈现为:
<HTML> <HEAD> … </HEAD> <body > … </body> </HTML>
a4j:support
在 UIComponent-based组件上添加ajax功能,使他们有JavaScript事件属性. 在解码期间:如果一个请求为Ajax-performed, 从ExternalContext 中的requestParameterMap属性中得到Map,如果该Map中"clientId" key对应的值非空,在组件上创建一个 javax.faces.event.ActionEvent, 并且传递该事件到该组件的queueEvent()中,然后把他的reReander区域中的组件id添加到reReander属性中.在编码过程中.不编码一个组件. 相反的,在父组件上添加一个与事件属性的值相同的值绑定(Instead, it adds ValueBinding for a property of the parent component with the name as a value of its "event" property).结果,当呈现时,父组件创建一个在提交一个ajax请求时用到的JS代码.如果该组件有子UIParameter组件,添加他的name/value作为附加的请求参数.如果父组件是一个UIInput的实例,并且ajaxType属性是input, 则也提交input 域中的值. 在这种情况下,你可以在UIForm外面提交一个单一的input域. (As a result, when rendered, the parent component builds JavaScript code for submitting an AJAX request on this event. If the component has child UIParameter components, appends it's name/value as additional request parameters. If a parent component is an instance of UIInput and the ajaxType property is "input", submits the value of the input field, also. In this case, you can submit a single input field outside of UIForm.)
Table 4.4. a4j:support 属性
|
actionListener
|
方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 参数,返回void.
|
|
parentProperties
|
parentProperties
|
|
action
|
方法绑定到要被激活的程序动作方法, 如果该 UIComponent 被用户激活, 根据immediate属性的值,方法在 请求处理生命周期中的Apply Request Values 或者 Invoke Application 阶段 被调用.
|
|
oncomplete
|
在客户端请求完成时调用的js代码
|
|
rendered
|
如果为false,该组件将不会被显示 |