📄 a4j+user+guide.htm
字号:
</PRE></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H2 class=title style="CLEAR: both"><A name=d0e447></A><B
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:support</H2></DIV></DIV></DIV>
<P>在 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.)</P>
<DIV class=table><A name=d0e452></A>
<P class=title><B>Table 4.4. <B
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:support 属性</B></P>
<DIV class=table-contents>
<TABLE summary="a4j:support attributes" border=1>
<TBODY>
<TR>
<TD>actionListener</TD>
<TD>方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent
参数,返回void.</TD></TR>
<TR>
<TD>parentProperties</TD>
<TD>parentProperties</TD></TR>
<TR>
<TD>action</TD>
<TD>方法绑定到要被激活的程序动作方法, 如果该 UIComponent 被用户激活, 根据immediate属性的值,方法在
请求处理生命周期中的Apply Request Values 或者 Invoke Application 阶段 被调用.</TD></TR>
<TR>
<TD>oncomplete</TD>
<TD> 在客户端请求完成时调用的js代码</TD></TR>
<TR>
<TD>rendered</TD>
<TD>如果为false,该组件将不会被显示.</TD></TR>
<TR>
<TD>status</TD>
<TD>Request status 组件的id(在 UIComopnent.findComponent()中使用)</TD></TR>
<TR>
<TD>reRender</TD>
<TD>该组件调用Ajax请求后重新渲染的组件的ID(在
UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式
</TD></TR>
<TR>
<TD>targetId</TD>
<TD>reRender的别名 : 该组件调用Ajax请求后重新渲染的组件的ID(在
UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式</TD></TR>
<TR>
<TD>id</TD>
<TD>每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.</TD></TR>
<TR>
<TD>disableDefault</TD>
<TD>使目标事件的动作不可用 ( 在javascript代码中添加 "return false;" )</TD></TR>
<TR>
<TD>requestDelay</TD>
<TD>在JS事件上延迟 ( 单位 ms. )发送Ajax请求.与事件队列公共工作可以减少键盘或者鼠标移动触发请求的次数</TD></TR>
<TR>
<TD>eventsQueue</TD>
<TD>用来避免在同一个事件上的重复请求的队列的名字.可以用来减少周期事件(如:按键,鼠标移动)请求的次数.</TD></TR>
<TR>
<TD>bypassUpdates</TD>
<TD>如果使true,在处理验证阶段后跳过更新模型值阶段到呈现阶段.可以用来验证组件的输入值.</TD></TR>
<TR>
<TD height=45>immediate</TD>
<TD
height=45>如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)</TD></TR>
<TR>
<TD>limitToList</TD>
<TD>如果为true,仅仅更新'reRender'属性中指定的组件,否则(默认值)更新所有Ajax Region中的组件</TD></TR>
<TR>
<TD>ajaxSingle</TD>
<TD>如果为 true , 仅仅提交一个field/link,而不是整个form中的内容.</TD></TR>
<TR>
<TD>event</TD>
<TD> 父组件的JS事件属性的名称 ( onclick , onchange, etc. ) , for which we will
build AJAX submission code.</TD></TR>
<TR>
<TD>binding</TD>
<TD>组件绑定.</TD></TR></TBODY></TABLE></DIV></DIV><BR class=table-break>
<P> </P>
<P>所有你需要指定的东西 - 父组件用来触发ajax请求的<FONT color=#ff00ff>事件</FONT>和被reRender的<FONT
color=#ff00ff>区域</FONT>, 和处理事件的Java bean<FONT color=#ff00ff>方法</FONT>.</P><PRE class=programlisting> <<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region selfRendered="true">
…
<h:selectBooleanCheckbox value="#{pizza.tip}">
<<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:support <FONT color=#ff00ff>event="change" reRender="#{partsId.list}"
action="#{Some.show_hide}"</FONT>/>
</h:selectBooleanCheckbox>
…
</<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region>
</PRE>
<P>因此,在上面的例子中,checkbox状态的改变将提交当前的区域. 'show_hide'动作将被调用,并且 'list'中的id所指定的组件将被更新.
</P></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H2 class=title style="CLEAR: both"><A name=d0e553></A><B
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:commandLink</H2></DIV></DIV></DIV>
<P>呈现一个Html <a> 元素,当点击时的动作就象一个form提交一样.</P>
<P>在解码的过程中:</P>
<P>
从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子组件为<a>的相应的子组件. 这些看起来就像一个Link文本.</P>
<DIV class=table><A name=d0e558></A>
<P class=title><B>Table 4.5. <B
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:commandLink
attributes</B></P>
<DIV class=table-contents>
<TABLE summary="a4j:commandLink attributes" border=1>
<TBODY>
<TR>
<TD>actionListener</TD>
<TD>方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent
参数,返回void.</TD></TR>
<TR>
<TD>title</TD>
<TD>该组件产生的标记元素的提示文字(当鼠标移动到该组件上面出现的提示文字)</TD></TR>
<TR>
<TD>oncomplete</TD>
<TD>在客户端请求完成时调用的js代码</TD></TR>
<TR>
<TD>shape</TD>
<TD>default|rect|circle|poly [CI] 该属性指定一个区域的形状.可能的取值: * default: 指定整个区域. *
rect:指定一个矩形区域. * circle: 定义一个圆形区域. * poly: 定义一个多边形区域.</TD></TR>
<TR>
<TD>target</TD>
<TD> </TD></TR>
<TR>
<TD>rendered</TD>
<TD>如果为false,该组件将不会被显示.</TD></TR>
<TR>
<TD>charset</TD>
<TD>该属性指定了通过链接指派的资源的字符编码.</TD></TR>
<TR>
<TD>reRender</TD>
<TD>该组件调用Ajax请求后重新渲染的组件的ID(在
UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式</TD></TR>
<TR>
<TD>targetId</TD>
<TD>Alias for reRender : 该组件调用Ajax请求后重新渲染的组件的ID(在
UIComopnent.findComponent()中使用),可以使一个id,也可以使逗号分开的很多id,或者是数据or集合的EL表达式</TD></TR>
<TR>
<TD>id</TD>
<TD>每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.</TD></TR>
<TR>
<TD>dir</TD>
<TD>文本方向.</TD></TR>
<TR>
<TD>rev</TD>
<TD>该属性用来描述从通过 href 属性指定的锚点到当前文档的反向链接。该属性值是通过空格分隔的 link
类型(值)的列表。<BR> </TD></TR>
<TR>
<TD>bypassUpdates</TD>
<TD>如果使true,在处理验证阶段后跳过更新模型值阶段到呈现阶段.可以用来验证组件的输入值.</TD></TR>
<TR>
<TD>styleClass</TD>
<TD>和HTML的class属性一样.</TD></TR>
<TR>
<TD>accesskey</TD>
<TD>触发该组件的快捷键</TD></TR>
<TR>
<TD>limitToList</TD>
<TD>如果为true,仅仅更新'reRender'属性中指定的组件,否则(默认值)更新所有Ajax Region中的组件</TD></TR>
<TR>
<TD>onkeypress</TD>
<TD>键盘事件,键被按下和松开</TD></TR>
<TR>
<TD>ajaxSingle</TD>
<TD>如果使true,仅仅提交一个field/link,而不是所有被控制的</TD></TR>
<TR>
<TD>ondblclick</TD>
<TD>HTML: 双击事件</TD></TR>
<TR>
<TD>style</TD>
<TD>HTML: 应用在该组件上的CSS.</TD></TR>
<TR>
<TD>onblur</TD>
<TD>当元素失去焦点时发生的事件</TD></TR>
<TR>
<TD>onmouseover</TD>
<TD>当滑鼠移动到组件上方时<BR> </TD></TR>
<TR>
<TD>onkeyup</TD>
<TD>当使用者按下并放开按键</TD></TR>
<TR>
<TD>value</TD>
<TD>该组件的当前值</TD></TR>
<TR>
<TD>action</TD>
<TD>方法绑定到要被激活的程序动作方法, 如果该 UIComponent 被用户激活, 根据immediate属性的值,方法在
请求处理生命周期中的Apply Request Values 或者 Invoke Application 阶段 被调用.</TD></TR>
<TR>
<TD>tabindex</TD>
<TD>设置不同元素之间获得焦点的顺序</TD></TR>
<TR>
<TD>hreflang</TD>
<TD>该属性指定了通过 href 指派的资源的基本语言,并且仅在 href 被指定的情况下使用(也就是说如果 A 中没有指定 href
属性,就不应该出现 hreflang 属性)。</TD></TR>
<TR>
<TD>type</TD>
<TD>该属性指定链接资源所采用的内容类型。(译者注:例如网页通常为 text/html)</TD></TR>
<TR>
<TD>lang</TD>
<TD>产生该组件标记所使用的语言</TD></TR>
<TR>
<TD>onclick</TD>
<TD>当鼠标点击时发生的事件 <BR> </TD></TR>
<TR>
<TD>status</TD>
<TD>请求状态组件的ID(在UIComopnent.findComponent()中使用)</TD></TR>
<TR>
<TD>onmouseout</TD>
<TD>鼠标光标移开元素时发生的事件</TD></TR>
<TR>
<TD>onkeydown</TD>
<TD>键按下时发生的事件</TD></TR>
<TR>
<TD>onmousedown</TD>
<TD>按下鼠标按键时发生的事件</TD></TR>
<TR>
<TD>requestDelay</TD>
<TD>在JS事件上延迟 ( 单位 ms. )发送Ajax请求.与事件队列公共工作可以减少键盘或者鼠标移动触发请求的次数</TD></TR>
<TR>
<TD>eventsQueue</TD>
<TD>用来避免在同一个事件上的重复请求的队列的名字.可以用来减少周期事件(如:按键,鼠标移动)请求的次数.</TD></TR>
<TR>
<TD>rel</TD>
<TD>该属性描述了从当前文档到通过 href 属性定义的锚点之间的关系。该属性值是通过空格分隔的 link 类型(值)的列表(译者注:在 Web
标准开发中,这个通常用来代替 target 属性,配合脚本,用来表示目的窗口)。</TD></TR>
<TR>
<TD>immediate</TD>
<TD>如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)</TD></TR>
<TR>
<TD>onfocus</TD>
<TD>使用在表单元素中,当元素获得焦点时发生的事件</TD></TR>
<TR>
<TD>onmouseup</TD>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -