⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a4j+user+guide.htm

📁 程序包
💻 HTM
📖 第 1 页 / 共 5 页
字号:
他们允许你选择页面中那个JSF组件被重新渲染(re-rendered) 来表现Ajax响应的结果 (你可以列出他们的 IDs 在“reRender” 属性中). 
</P>
<P>&lt;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:commandButton&gt; 和 
&lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:commandLink&gt; 
tags 用来在 “onclick” JavaScript 事件中发送Ajax请求. </P>
<P>在你选择JS事件(“onkeyup”, “onmouseover”, etc)时, &lt;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:support&gt; tag 
允许你在普通的JSF组件中添加Ajax 功能和发送ajax请求.</P>
<P>提供Ajax请求功能的大部分重要的属性如下:</P>
<DIV class=itemizedlist>
<UL type=disc>
  <LI>
  <P>reRender 属性 - 就如我们前面提到过的,在一个Ajax响应到来时重新渲染(reRendered)组件. </P>
  <LI>
  <P>RequestDelay 属性 – 用来调节请求的频率. </P><PRE class=programlisting>    &lt;h:inputText size="50" value="#{bean.text}"&gt;
        &lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:support event="onkeyup" RequestDelay=”3”/&gt;
    &lt;/h:inputText&gt;
            </PRE>
  <P>因此每一个来自于键盘事件的请求将会延迟3 ms ,来减少请求的次数. </P>
  <LI>
  <P>EventsQueue – 储存下一个请求的队列的名字. 队列帮助阻止下一个请求知道当前的处理完. </P>
  <LI>
  <P>LimitToList 用来控制更新的区域. 设置为true – 将更新仅在reRender list中的区域, 
  如果为false,将更新所有Output Panels区域. </P>
  <LI>
  <P>ajaxSingle 如果设置为false用来指定发送请求的区域&nbsp; – 如果为true则发送整个区域 - only control 
  caused event.(attributes specify regions to be sent with request if false – 
  it’ll be full region in other case - only control caused event.) 
</P></LI></UL></DIV></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H3 class=title><A name=d0e250></A>决定发送什么</H3></DIV></DIV></DIV>
<P>你可能描述了一个你决定发送到服务器的页面区域.当你发送ajax请求的时候,通过这种方式你可以控制JSF 
View的那个部分在服务器端被解码(decoded).</P>
<P>描述你JSF页面上的一个Ajax区域的最容易的方法是什么都不做.这是因为在&lt;f:view&gt; 和 &lt;/f:view&gt; tags 
中的内容在默认值的情况下认为是ajax区域.</P>
<P>通过使用&lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region&gt; 
tag你可以在一个JSF页面中定义多个Ajax区域 (they can even be nested). </P>
<P>如果你希望渲染ajax响应以外的区域,那么renderRegionOnly属性值应该设置为false.否则ajax更新被限制在活动区域的元素中. 
</P></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H3 class=title><A name=d0e261></A>决定改变什么</H3></DIV></DIV></DIV>
<P>在大部分情况下都可以使用 “reRender”中的ids来定义需要更新的 “AJAX zones”. </P>
<P>但是如果你的页面包含&lt;f:verbatim/&gt; tag(你希望在ajax响应中更新它的内容)你不可以使用这种方式.</P>
<P>我们在上面描述的&lt;f:verbatim/&gt; tag 的问题涉及到JSF组件的transientFlag值. 
如果该标记的值为true,这个组件不能参与保存和恢复组件树(saving or restoring)的处理过程. </P>
<P>为了提供一种解决这个问题的方法, Ajax4jsf 利用&lt;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:outputPanel&gt; 
tag定义了一个output panel . 如果你把&lt;f:verbatim/&gt; tag放在output panel中, 那么在AJAX 响应中 
&lt;f:verbatim/&gt; tag和其他panel中的child tags中的内容可以被更新 .有两种方法来控制它: </P>
<DIV class=itemizedlist>
<UL type=disc>
  <LI>
  <P>设置“ajaxRendered” 属性值为true. </P>
  <LI>
  <P>设置动作组件的“reRender” 属性值为output panel的 ID. </P></LI></UL></DIV>
<P></P></DIV></DIV></DIV>
<DIV class=chapter lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H2 class=title><A name=d0e280></A>Chapter&nbsp;4.&nbsp;Ajax4JSF 
组件库</H2></DIV></DIV></DIV>
<DIV class=toc>
<P><B>Table of Contents</B></P>
<DL>
  <DT><A href="#d0e283"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:ajaxListener</A> 
  <DT><A href="#d0e302"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region</A> 
  <DT><A href="#d0e351"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page</A> 
  <DT><A href="#d0e447"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:support</A> 
  <DT><A href="#d0e553"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:commandLink</A> 
  <DT><A href="#d0e778"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:commandButton</A> 
  <DT><A href="#d0e995"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:outputPanel</A> 
  <DT><A href="#d0e1064"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:actionparam</A> 
  <DT><A href="#d0e1109"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:status</A> 
  <DT><A href="#d0e1280"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:loadBundle</A> 
  <DT><A href="#d0e1315"><B 
  style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:mediaOutput</A></DT></DL></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H2 class=title style="CLEAR: both"><A name=d0e283></A><B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:ajaxListener</H2></DIV></DIV></DIV>
<P>和 ActionListener或者ValueChangeListener的工作方式一样, 只是仅用于AJAX容器. 
添加一个指定的类作为AjaxEvent的监听器. (sent in case of an AJAX request for this container). 
</P>
<DIV class=table><A name=d0e288></A>
<P class=title><B>Table&nbsp;4.1.&nbsp;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:ajaxListener 
attributes</B></P>
<DIV class=table-contents>
<TABLE summary="a4j:ajaxListener attributes" border=1>
  <TBODY>
  <TR>
    <TD>type</TD>
    <TD>注册到AjaxListener 中类的完全限定的Java类名</TD></TR></TBODY></TABLE></DIV></DIV><BR 
class=table-break><PRE class=programlisting>    &lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region selfRendered="true" ajaxListener="#{bean.processAjax}" id="Region"&gt;
    &lt;/<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region&gt;
    </PRE>
<P>当来自于Region的AJAX request触发时,将调用bean的'processAjax'方法. </P></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H2 class=title style="CLEAR: both"><A name=d0e302></A><B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region</H2></DIV></DIV></DIV>
<P>该标签定义在AJax请求处理过程中被发送到服务器端解码的部分JSF组件树. </P>
<DIV class=table><A name=d0e307></A>
<P class=title><B>Table&nbsp;4.2.&nbsp;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region 的属性</B></P>
<DIV class=table-contents>
<TABLE summary="a4j:region attributes" border=1>
  <TBODY>
  <TR>
    <TD>selfRendered</TD>
    <TD>如果为true,在调用应用程序(InvokeApplication )阶段自渲染子树(如果immediate 属性设置为true则是 
      Decode)</TD></TR>
  <TR>
    <TD>renderRegionOnly</TD>
    <TD>标记,用来决定活动区域外的内容在Ajax响应中是否渲染.如果为"true" , 在AJAX response过程中活动区域外的组件都不渲染. 
      如果为"false", 将渲染包含在响应中的所有组件树.默认值为"true"</TD></TR>
  <TR>
    <TD>rendered</TD>
    <TD>如果为 false, 该组件将不被重新渲染.</TD></TR>
  <TR>
    <TD>id</TD>
    <TD>每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.</TD></TR>
  <TR>
    <TD>immediate</TD>
    <TD>如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)</TD></TR>
  <TR>
    <TD>binding</TD>
    <TD>组件绑定</TD></TR>
  <TR>
    <TD>ajaxListener</TD>
    <TD>方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 
      参数,返回void.</TD></TR></TBODY></TABLE></DIV></DIV><BR class=table-break><PRE class=programlisting>    &lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region&gt;
        &lt;!--Some content--&gt;
    &lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region&gt;
    </PRE>
<P>如果在该组件的区域中有一个Ajax请求调用了&nbsp; – 该区域将根据Ajax的设置被框架处理. </P></DIV>
<DIV class=section lang=en>
<DIV class=titlepage>
<DIV>
<DIV>
<H2 class=title style="CLEAR: both"><A name=d0e351></A><B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page</H2></DIV></DIV></DIV>
<P>该组件呈现一个完全的HTML页面结构.它必须是view root (JSP &lt;f:view&gt; tag)的第一个(并且是仅有的一个)子组件. 
没有Html代码可以在该组件的外面. 它也支持在Ajax请求中处理子组件,就和&lt;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:region&gt;一样.对于一个普通的请求,它将把结果呈现为在客户端页面&lt;head&gt;元素中的&lt;script&gt;元素.如果该组件包含一个"head" 
facet, 该facet的内容也呈现在&lt;head&gt;中.对于一个Ajax请求,在整个结构中仅仅涉及到的组件被呈现.下面是个在JSP (jspx 
version)中使用它的例子: </P>
<P>&lt;jsp:root xmlns:.... </P>
<P>&nbsp;&nbsp;&nbsp; &lt;f:view&gt; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;f:facet name="head"&gt; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/f:facet&gt;</P>
<P>&lt;!-- page content here --&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/f:view&gt;</P>
<P>&lt;/jsp:root&gt;</P>
<DIV class=table><A name=d0e356></A>
<P class=title><B>Table&nbsp;4.3.&nbsp;<B 
style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page attributes</B></P>
<DIV class=table-contents>
<TABLE summary="a4j:page attributes" border=1>
  <TBODY>
  <TR>
    <TD>selfRendered</TD>
    <TD>如果为true,在调用应用程序(InvokeApplication )阶段自渲染子树(如果immediate 属性设置为true则是 
      Decode)</TD></TR>
  <TR>
    <TD>lang</TD>
    <TD>用来描述在产生该组件的markup时用到的语言(产生该组件标记所使用的语言)</TD></TR>
  <TR>
    <TD>title</TD>
    <TD>该组件产生的Markup的title属性值</TD></TR>
  <TR>
    <TD>renderRegionOnly</TD>
    <TD>renderRegionOnly</TD></TR>
  <TR>
    <TD>onunload</TD>
    <TD>在页面unload时执行的JS代码</TD></TR>
  <TR>
    <TD>rendered</TD>
    <TD>如果是 false, 该组件不会被呈现.</TD></TR>
  <TR>
    <TD>contentType</TD>
    <TD>设置响应的自定义的mime内容类型</TD></TR>
  <TR>
    <TD>dir</TD>
    <TD>文本方向</TD></TR>
  <TR>
    <TD>id</TD>
    <TD>&nbsp; 每个组件都应该有个唯一的id. 如果没有指定的话,将会自动产生.</TD></TR>
  <TR>
    <TD>styleClass</TD>
    <TD>和HTML class 属性对应.</TD></TR>
  <TR>
    <TD>immediate</TD>
    <TD>如果该组件被Ajax请求激活的话,标记该组件应该立即(在应用请求值阶段)被感兴趣的监听器和动作处理,而不是等到调用应用程序阶段.(译者注:该标记和JSF中的immediate标记所代表的意思差不多,跳过验证阶段到呈现响应阶段)</TD></TR>
  <TR>
    <TD>onload</TD>
    <TD>在页面load时执行的JS代码</TD></TR>
  <TR>
    <TD>style</TD>
    <TD>在该组件被呈现时应用的CSS style(s) </TD></TR>
  <TR>
    <TD>pageTitle</TD>
    <TD>作为页面 title的字符串</TD></TR>
  <TR>
    <TD>binding</TD>
    <TD>组件绑定.</TD></TR>
  <TR>
    <TD>ajaxListener</TD>
    <TD>方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件.该方法必须为public的并且接受一个 AjaxEvent 
      参数,返回void.</TD></TR></TBODY></TABLE></DIV></DIV><BR class=table-break><PRE class=programlisting>        &lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page&gt;
    	&lt;f:facet name=”head”&gt;
    	&lt;/f:facet&gt;
    &lt;<B style="COLOR: black; BACKGROUND-COLOR: #ffff66">a4j</B>:page&gt;
    </PRE>
<P>上面的示例结构将被呈现为:</P><PRE class=programlisting>        &lt;HTML&gt;
        &lt;HEAD&gt; 
        &lt;/HEAD&gt; 
        &lt;body &gt;
        &lt;/body&gt; 
    &lt;/HTML&gt;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -