ajax4jsf学习笔记之组件列表

2017-11-21 20:13:38来源:CSDN作者:qq_36411874人点击

分享

转自:http://blog.itpub.net/7697443/viewspace-863915/

a4j:ajaxListener

a4j:region
a4j:page
a4j:support
a4j:commandLink
a4j:commandButton
a4j:outputPanel
a4j:actionparam
a4j:status
a4j:loadBundle
a4j:mediaOutput
[@more@]

a4j:ajaxListener

和 ActionListener或者ValueChangeListener的工作方式一样, 只是仅用于AJAX容器. 添加一个指定的类作为AjaxEvent的监听器. (sent in case of an AJAX request for this container).

Table 4.1. a4j:ajaxListener attributes

type注册到AjaxListener 中类的完全限定的Java类名

当来自于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.

                    

如果在该组件的区域中有一个Ajax请求调用了 – 该区域将根据Ajax的设置被框架处理.

a4j:page

该组件呈现一个完全的HTML页面结构.它必须是view root (JSP tag)的第一个(并且是仅有的一个)子组件. 没有Html代码可以在该组件的外面. 它也支持在Ajax请求中处理子组件,就和一样.对于一个普通的请求,它将把结果呈现为在客户端页面元素中的

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.
parentPropertiesparentProperties
action方法绑定到要被激活的程序动作方法, 如果该 UIComponent 被用户激活, 根据immediate属性的值,方法在 请求处理生命周期中的Apply Request Values 或者 Invoke Application 阶段 被调用.
oncomplete在客户端请求完成时调用的js代码
rendered如果为false,该组件将不会被显示.
statusRequest status 组件的id(在 UIComopnent.findComponent()中使用)
reRender该组件调用Ajax请求后重新渲染的组件的ID(在 UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
targetIdreRender的别名 : 该组件调用Ajax请求后重新渲染的组件的ID(在 UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
disableDefault使目标事件的动作不可用 ( 在javascript代码中添加 "return false;" )
requestDelay在JS事件上延迟 ( 单位 ms. )发送Ajax请求.与事件队列公共工作可以减少键盘或者鼠标移动触发请求的次数
eventsQueue用来避免在同一个事件上的重复请求的队列的名字.可以用来减少周期事件(如:按键,鼠标移动)请求的次数.
bypassUpdates如果使true,在处理验证阶段后跳过更新模型值阶段到呈现阶段.可以用来验证组件的输入值.
immediate如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)
limitToList如果为true,仅仅更新'reRender'属性中指定的组件,否则(默认值)更新所有Ajax Region中的组件
ajaxSingle如果为 true , 仅仅提交一个field/link,而不是整个form中的内容.
event父组件的JS事件属性的名称 ( onclick , onchange, etc. ) , for which we will build AJAX submission code.
binding组件绑定.

所有你需要指定的东西 - 父组件用来触发ajax请求的事件和被reRender的区域, 和处理事件的Java bean方法.

            …                    <a4j:support event="change" reRender="#{partsId.list}"            action="#{Some.show_hide}"/>        

因此,在上面的例子中,checkbox状态的改变将提交当前的区域. 'show_hide'动作将被调用,并且 'list'中的id所指定的组件将被更新.

a4j:commandLink

呈现一个Html 元素,当点击时的动作就象一个form提交一样.

在解码的过程中:

从ExternalContext的属性requestParameterMap中得到一个Map,如果该Map中包含"clientId" key的非空值, 在组件上创建一个 javax.faces.event.ActionEvent 事件,并且传递该事件给组件的queueEvent() 方法.如果该请求是Ajax-performed,把reRander属性中的IDs值添加到嵌套的AjaxContainer的 rendered areas list中 ,在解码的过程中也添加组件的参数(PARAM_NAME 和 PARAM_VALUE 是任何嵌套的子UIParameter的names 和 values .) names 和 values必须是被URLEncoded处理过的.如果styleClass属性被指定了,呈现它的值为html中的class属性的值. 呈现任何non-UIParameter子组件为的相应的子组件. 这些看起来就像一个Link文本.

Table 4.5. a4j:commandLink attributes

actionListener方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 参数,返回void.
title该组件产生的标记元素的提示文字(当鼠标移动到该组件上面出现的提示文字)
oncomplete在客户端请求完成时调用的js代码
shapedefault|rect|circle|poly [CI] 该属性指定一个区域的形状.可能的取值: * default: 指定整个区域. * rect:指定一个矩形区域. * circle: 定义一个圆形区域. * poly: 定义一个多边形区域.
target 
rendered如果为false,该组件将不会被显示.
charset该属性指定了通过链接指派的资源的字符编码.
reRender该组件调用Ajax请求后重新渲染的组件的ID(在 UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
targetIdAlias for reRender : 该组件调用Ajax请求后重新渲染的组件的ID(在 UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
dir文本方向.
rev该属性用来描述从通过 href 属性指定的锚点到当前文档的反向链接。该属性值是通过空格分隔的 link 类型(值)的列表。
bypassUpdates如果使true,在处理验证阶段后跳过更新模型值阶段到呈现阶段.可以用来验证组件的输入值.
styleClass和HTML的class属性一样.
accesskey触发该组件的快捷键
limitToList如果为true,仅仅更新'reRender'属性中指定的组件,否则(默认值)更新所有Ajax Region中的组件
onkeypress键盘事件,键被按下和松开
ajaxSingle如果使true,仅仅提交一个field/link,而不是所有被控制的
ondblclickHTML: 双击事件
styleHTML: 应用在该组件上的CSS.
onblur当元素失去焦点时发生的事件
onmouseover当滑鼠移动到组件上方时
onkeyup当使用者按下并放开按键
value该组件的当前值
action方法绑定到要被激活的程序动作方法, 如果该 UIComponent 被用户激活, 根据immediate属性的值,方法在 请求处理生命周期中的Apply Request Values 或者 Invoke Application 阶段 被调用.
tabindex设置不同元素之间获得焦点的顺序
hreflang该属性指定了通过 href 指派的资源的基本语言,并且仅在 href 被指定的情况下使用(也就是说如果 A 中没有指定 href 属性,就不应该出现 hreflang 属性)。
type该属性指定链接资源所采用的内容类型。(译者注:例如网页通常为 text/html)
lang产生该组件标记所使用的语言
onclick当鼠标点击时发生的事件 
status请求状态组件的ID(在UIComopnent.findComponent()中使用)
onmouseout鼠标光标移开元素时发生的事件
onkeydown键按下时发生的事件
onmousedown按下鼠标按键时发生的事件
requestDelay在JS事件上延迟 ( 单位 ms. )发送Ajax请求.与事件队列公共工作可以减少键盘或者鼠标移动触发请求的次数
eventsQueue用来避免在同一个事件上的重复请求的队列的名字.可以用来减少周期事件(如:按键,鼠标移动)请求的次数.
rel该属性描述了从当前文档到通过 href 属性定义的锚点之间的关系。该属性值是通过空格分隔的 link 类型(值)的列表(译者注:在 Web 标准开发中,这个通常用来代替 target 属性,配合脚本,用来表示目的窗口)。
immediate如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)
onfocus使用在表单元素中,当元素获得焦点时发生的事件
onmouseup当释放鼠标按键时发生的事件
binding组件绑定.
onmousemove鼠标光标在元素上移动时发生的事件
coords定义区域 -- coords 
a.矩形:必须使用四个数字,前两个数字为左上角座标,后两个数字为右下角座标 
例:<area shape=rect coords=100,50,200,75 href="URL"> 
b.圆形:必须使用三个数字,前两个数字为圆心的座标,最后一个数字为半径长度 
例:<area shape=circle coords=85,155,30 href="URL"> 
c.任意图形(多边形):将图形之每一转折点座标依序填入 
例:<area shape=poly coords=232,70,285,70,300,90,250,90,200,78 href="URL">

通常a4j:commandLink 是一个 具有AJAX 支持的HTML  元素. 包含所有的a4j:support的主要功能, 还有它自己的onclick事件的Ajax请求和所有与a4j:Support组合的CommandLink特性.

a4j:commandButton

呈现一个HTML "input" 元素.

在解码的过程中:

从ExternalContext的属性requestParameterMap中得到一个Map,如果该Map中包含"clientId" key的非空值, 在组件上创建一个 javax.faces.event.ActionEvent 事件,并且传递该事件给组件的queueEvent() 方法.如果该请求是Ajax-performed,把reRander属性中的IDs值添加到嵌套的AjaxContainer的 rendered areas list中 .

在编码的过程中:

为onclick事件创建一个AJAX.Submit JavaScript调用.呈现组件的clientId 为name属性的值.呈现组件的当前值为value属性的值.

如果styleClass属性被指定了,呈现它的值为class属性的值. 呈现 HTML "input"元素的子元素.

Table 4.6. a4j:commandButton attributes

actionListener方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 参数,返回void.
title该组件产生的标记元素的提示文字(当鼠标移动到该组件上面出现的提示文字)
oncomplete在客户端请求完成时调用的js代码
rendered如果为false,该组件将不会被显示.
reRender该组件调用Ajax请求后重新渲染的组件的ID(在 UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
targetIdAlias for reRender : 该组件调用Ajax请求后重新渲染的组件的ID(在 UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
onchange使用在表单元素中,当某些东西改变时发生的事件
dir文本方向.
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
bypassUpdates如果使true,在处理验证阶段后跳过更新模型值阶段到呈现阶段.可以用来验证组件的输入值.
styleClass和HTML的class属性一样.
accesskey触发该组件的快捷键
limitToList如果为true,仅仅更新'reRender'属性中指定的组件,否则(默认值)更新所有Ajax Region中的组件
onkeypress键盘事件,键被按下和松开
ajaxSingle如果使true,仅仅提交一个field/link,而不是所有被控制的
ondblclickHTML: 双击事件
image在这个button中要显示的图片的绝对或者相对URL 如果指定了该 "input" 元素将为"image"类型. 否则, it will be of the type specified by the "type" property with a label specified by the "value" property.
styleHTML: 应用在该组件上的CSS.
size定义组件显示的尺度
onblur当失去焦点时发生的事件
onmouseover当滑鼠移动到组件上方时
value该组件的当前值
action方法绑定到要被激活的程序动作方法, 如果该 UIComponent 被用户激活, 根据immediate属性的值,方法在 请求处理生命周期中的Apply Request Values 或者 Invoke Application 阶段 被调用.
onkeyup当使用者按下并放开按键
tabindex设置不同元素之间获得焦点的顺序
lang产生该组件标记所使用的语言
typesubmit|reset|image|button 指定创建组件的类型,默认值为Submit.
disabled把控件的状态设置为不能使用
onclick当鼠标点击时发生的事件 
status请求状态组件的ID(在UIComopnent.findComponent()中使用)
onmouseout鼠标光标移开元素时发生的事件
alt文本方向.
onkeydown键按下时发生的事件
onmousedown按下鼠标按键时发生的事件
requestDelay在JS事件上延迟 ( 单位 ms. )发送Ajax请求.与事件队列公共工作可以减少键盘或者鼠标移动触发请求的次数
eventsQueue用来避免在同一个事件上的重复请求的队列的名字.可以用来减少周期事件(如:按键,鼠标移动)请求的次数.
immediate如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)
onfocus当组件获得焦点时发生的事件
onmouseup当释放鼠标按键时发生的事件
binding组件绑定.
onmousemove鼠标光标在元素上移动时发生的事件

简单来说a4j:CommandButton 是一个带有AJAX Support的 HTML  元素 . 包含所有的a4j:support的主要功能, 还有它自己的onclick事件的Ajax请求和所有与a4j:Support组合的CommandButton特性.

a4j:outputPanel

创建页面中具有 AJAX-enabled的一个区域. 作为普通的请求,根据layout的属性值("inline" or "block")呈现为 或者

HTML 元素. ( "id"属性将是clientId 属性的值.) 对于一个AJAX请求,如果ajaxRendered被设置为true,该元素的内容被包含在ajax响应中.

Table 4.7. a4j:outputPanel attributes

styleClass和HTML的class属性一样.
title该组件产生的标记元素的提示文字(当鼠标移动到该组件上面出现的提示文字)
lang产生该组件标记所使用的语言
layoutHTML layout用于产生 markup. 可能的取值是: "block" 产生一个 HTML元素, "inline" 产生一个 HTML 元素, 和 "none"不产生 HTML 元素. 对于none 当子元素的rendered属性被设置为false时 这里有个小例外 ,这是创建一个具有相同id的空 元素 作为子元素,用来当作一个用于后序处理的占位符
keepTransient指定所有子组件为non-transient的标记.如果为true,所有的子组件将被设置为non-transient,并且在以保存的组件树中(keep in saved components tree). For output in self-renderer region all content ( By default, all content in tags and non-jsf elements in facelets, marked as transient - since, self-rendered ajax regions don't plain output for ajax processing ).
ajaxRenderedDefines, whether the content of this component must be (or not) included in AJAX response created by parent AJAX Container, even if it is not forced by reRender list of ajax action. Ignored if component marked to output by Ajax action. default false
styleHTML: 应用在该组件上的CSS.
rendered如果为false,该组件将不会被显示.
binding组件绑定.
dir文本方向.
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.

        	    		    		    			    		    		    		    			    		    		    	        

在上面的例子中,在每个a4j:commandButton请求时 OutputPanels 中的 outputText 将被 reRendered. 当验证错误时,消息将出现;或者,text将重复出现.

a4j:actionparam

联合两个JSF tags的桥梁, ; 和 . 在呈现阶段,像往常一样被符组件 (; 或者 like) 解码,在处理请求阶段,如果父组件执行一个动作事件, 更新"assignTo" 属性的值为它的新值.如果一个转换属性被指定了,使用它来编码和解码该值 为保存在html 参数中的字符串.

Table 4.8. a4j:actionparam attributes

noEscape如果设置为true,该值将不会被附上但引号 并且每一转义字符. This allows the use of the value as JavaScript code for calculating value on the client-side. This doesn't work with non-AJAX components.
value初始化的值或者值绑定
converter使用一个转换(converter )的id 或者引用一个converter.
assignToEL表达式用来更新bean的属性. 如果父组件执行一个 actionEvent,该值将被更新.
binding组件绑定.
name该参数的名字
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.

a4j:status

在客户端呈现一个表现ajax请求状态的标识.

在编码过程中:

创建两个带有id的该组件的子(clientId )span元素,或者添加了":status.start" 和 ":status:stop" 字符串的 ajax区域的目标(使用for属性来指定). "start" span 具有 "display:none" style (隐藏).在span里面,呈现startText/stopText属性值或者如果"start" 和 "stop" facets存在的话,呈现facets的内容. 在执行一个ajax请求时, 客户端的js代码改变 "start" span 的可见属性并且隐藏"stop". 当该指示器所指示的请求都完成时,恢复"stop" 并且隐藏"start" .start[style,styleClass] 和 stop[style,styleClass] 被呈现为 spans 的 style 和 class 属性 .

During Encoding: Creates two "span" elements with id created as clientId of this component or of target AJAX region (pointed to by the "for" property) with appended ":status.start" and ":status:stop" strings. "start" span has "display:none" style (hidden). Inside this span, renders the value of the startText/stopText properties or, if they exist, the content of "start" and "stop" facets. On performing an AJAX request, the client-side script changes the visibility of the "start" span and hides "stop". After all requests for this indicator are completed, restores "stop" and hide "start" start[style,styleClass] and stop[style,styleClass] are rendered for spans as style and class atributes, respectivetly.

在解码的过程中:

....

Creates two "span" or "div"(depending on 'layout' attribute) elements with id created as clientId of this component or of target AJAX region (pointed to by the "for" property) with appended ":status.start" and ":status:stop" strings. "start" element has "display:none" style (hidden). Inside this element, renders the value of the startText/stopText properties or, if they exist, the content of "start" and "stop" facets. On performing an AJAX request, the client-side script changes the visibility of the "start" element and hides "stop". After all requests for this indicator are completed, restores "stop" and hide "start" start[style,styleClass] and stop[style,styleClass] are rendered for spans as style and class atributes, respectivetly.

Table 4.9. a4j:status attributes

startStyleClass在开始一个请求时应用到组件上的CSS类
stopStyle在 一个请求响应完成时应用到组件上的CSS
stopStyleClass在 一个请求响应完成时应用到组件上的CSS类
layout定义面板的布局,可以为block或者inline
title该组件产生的标记元素的提示文字(当鼠标移动到该组件上面出现的提示文字)
rendered如果为false,该组件将不会被显示.
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
dir文本方向.
styleClass和HTML的class属性一样.
startStyle在开始一个请求时应用到组件上的CSS类
onkeypress键盘事件,键被按下和松开
ondblclickHTML: 双击事件
styleHTML: 应用在该组件上的CSS.
onmouseover当滑鼠移动到组件上方时
for指定应用于 AjaxContainer组件的ID ( 在javax.faces.UIComopnent.findComponent() 中使用).
onkeyup当使用者按下并放开按键
lang产生该组件标记所使用的语言
onclick当鼠标点击时发生的事件 
onmouseout鼠标光标移开元素时发生的事件
startText在请求开始时显示的文本
onkeydown键按下时发生的事件
onmousedown按下鼠标按键时发生的事件
forceId如果为true,呈现组件id为HTML代码而不是JSF产生的代码.(译者注:参考Myfaces中的ForceId.)
stopText当请求完成时显示的文本
onmouseup当释放鼠标按键时发生的事件
binding组件绑定.
onmousemove鼠标光标在元素上移动时发生的事件

指示请求状态的两种表示方式:

  1. 定义 "startText" 和 "stopText" 属性

                                
  2. 定义 "start" 和 "stop" facets

                                    	                        	                        

    在任何一种状态下,当请求开始时 - ":status.start" span 将被呈现 并且在请求结束后":status.stop" span 将出现.

将状态应用到组件上也有两种方法:

  1. 指定目标 AJAX Containers 的id为“for” 属性的值

  2. 在组件上定义 “status” 属性 指定到状态.

如果for省略了 - 状态组件将指向它所在的区域(status component will be pointed to region where it's placed )

a4j:loadBundle

加载一个本地化当前view的资源包,并且暴露它(作为一个Map)为当前请求的请求参数. In difference of original f:loadBundle tag, stored in components tree and activate on ajax/non ajax responses

Table 4.10. a4j:loadBundle attributes

var在请求范围中使用的变量
basename资源文件的basename
rendered如果为false,该组件将不会被显示.
binding组件绑定.
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.

a4j:mediaOutput

用用户指定的资源( images, sounds, video, active objects, applets ...)来创建任何连接元素类型的类.在CreateContent属性中指定的方法将把从DataBean中指定的值传递给OutputStream.重要: 在value中指定的数据bean必须实现Serializable接口.

Table 4.11. a4j:mediaOutput attributes

declaredeclare but don't instantiate flag
dir文本方向.
id每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.
rev该属性用来描述从通过 href 属性指定的锚点到当前文档的反向链接。该属性值是通过空格分隔的 link 类型(值)的列表。
mimeType应用于响应头的mime类型( 'image/jpeg' etc )
styleHTML: 应用在该组件上的CSS.
onmouseover当滑鼠移动到组件上方时
onkeyup当使用者按下并放开按键
tabindex设置不同元素之间获得焦点的顺序
archive空格分开的URIs
converterconverter
lang产生该组件标记所使用的语言
createContent方法调用表达式用来传递资源到 OutputStream. 必须有两个参数 java.io.OutputStream 和 java.lang.Object ( deserialized value of data attribute )
onmouseout鼠标光标移开元素时发生的事件

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台