- 浏览: 150939 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (87)
- seam/jsf (22)
- java (24)
- spring (6)
- hibernate (2)
- Mysql (4)
- web (1)
- JMS (0)
- 计算机(computer) (1)
- linux (3)
- eclipse (4)
- Javascript (1)
- xstream (3)
- JPA (2)
- 汇编 (1)
- HttpClient (1)
- quartz (1)
- J2EE (2)
- EJB (1)
- restful web (1)
- maven (1)
- TTServer (3)
- restlet (0)
- jquery (0)
- Firebug (0)
- jquery Masonry+Infinite-Scroll (0)
- JACOB (0)
- elasticsearch (0)
最新评论
-
tuspark:
关于ApplicationContextAware的详细介绍, ...
ApplicationContextAware -
hc_face:
应该是 环境被初始化的时候,bean 也一并被初始化吧。先后顺 ...
ApplicationContextAware -
奇林醉:
有点明白了
Collections.unmodifiableList() -
tcking:
HashSet不关心迭代的次序,也就是说下一次的迭代次序可能就 ...
HashSet LinkedHashSet TreeSet -
yzhw:
我要去试试
seam前端提速
. 用队列控制 Event Traffic
1) 以下两个属性用来避免由频繁的 DHTML 事件所引发大量的 request 请求。
· eventsQueue
· requestDelay
2) 对于能够引发 Ajax Request 的 4 种控件来说,以上两种属性都是可用的。
3) eventQueue 属性
· 将 eventQueue 属性指定一个对列名,则在当前一个 Request 被 Server 处理而 Response 还未被发回之前,下一个 Request 都将停留在队列里,以等待 Response 被发回。
· 队列里总保持只有一个待发的 Request ,所有后续的 Request 都会将前面未发的 Request 清除掉。
比如,当你在 <a4j:support event=”onkeyup”> 的文本框中输入第一个字符‘ a ’,则第一个 Request 会被立即发到 Server ,但在 Response 被发回之前,你又输入了‘ b ’,则文本框里的值变为‘ ab ’,但这个 Request 只能等待第一个 Response 被发回来以后才能被送出。而此时,你又输入了第三个字符‘ c ’,则‘ abc ’的 Request 就回把队列里还没来得及发出去的‘ ab ’的 Request 清除掉。此时,第一个 Response “终于”回来了,则‘ abc ’的 Request 才被顺利的发出去。
· 大致测试了一下,当多个控件将队列名都设为同一个的时候,比如 eventsQueue = fooQueue ,控件之间的 Request 不会相互干扰,也就是说控件 B 的新的 Request ,并不会把同一队列中控件 A 的未发的旧 Request 清除掉。
4) requestDelay 属性
· 单位毫秒 ms ,用来定义 Request 被发送出去之前,需要在队列里强制等待的时间。即使前面一个 Request 都没有,也必须老老实实等着到点。
· 可以将 eventsQueue 和 requestDelay 一起使用。
5) ignoreDupResponse 属性
· 将此属性设为 true ,则当同一控件发出新的 Request 的时候,当前的 Response 将被 Ajax 忽略掉。
注意,之前的 Request 在 Server 上已经被处理,只是 Response 在 Client 上被忽略掉了。
· eventsQueue 和 ignoreDupResponse 的区别在于:
前者的 Response 总是会被 Client 处理,然后队列中的 Request 才被发出,属于“先来后到”;而对于后者来说,一旦发现同一控件又有了新的 Request ,则立即抛弃现有的 Response ,属于“喜新厌旧”。
· 如果设置了 ignoreDupResponse 而没有设置 eventsQueue ,则系统会根据控件的 ID 创建一个默认的事件队列。
2. JavaScript 交互
1) 调用自定义的 JavaScript 函数
尽管使用 RichFaces 时不用写 JavaScript ,但 RichFaces 仍然允许你调用自定义的 JavaScript 函数。
· onsubmit :仅当 Ajax Request 被发送之前;
· onbeforedomupdate :仅当 DOM 更新被处理之前;
· oncomplete : 当 DOM 更新被处理完毕之后。
2) data 属性
· 可以从 Server 上得到任何额外的数据,可以通过 EL 表达式简单地将 data 属性指向 bean property ,然后数据将会按照 JSON 的格式串行化到客户端。比如:
<a4j:commandButton value="Submit" reRender="out"
data="#{bean.text}" oncomplete="alert(data)"/>
· 除了基础类型,其他可以被串行化的复杂类型(数组、集合),也可以加入 JSON 格式。
3. 性能方面的考虑
1) 使用 eventsQueue 和 requestDelay
2) 使用 bypassUpdate 属性
当此属性设为 true 的时候, Update Model 和 Invoke Application 阶段将会被跳过,从而缩短响应时间。通常用在表单验证上。
3) 使用 <a4j:region>
· 当 renderRegionOnly 属性被设为 true 时, Browser 将只刷新当前 Region ,也就是发出 Ajax Request 的 Region 。对于 Region 以外的, Partial-Page 刷新将不会被处理。
· 当 renderRegionOnly 属性被设为 true 时,只有同时 满足以下两点的部分会被刷新:
控件必须在引发 Ajax Request 的 Region 里;
被设置为需要刷新(在当前 Region 的其他控件的 reRender 里或者在 <a4j:outputPanel ajaxRendered=”true”> 里)。
其他的部分一概不会被刷新。
· selfRendered 属性
4. 验证用户输入(实例)
1) 使用 <a4j:region> 或者 ajaxSingle 属性来限制 process 的 Region ,以避免控件间相互干扰。
2) 使用 <rich:message> 来显示错误信息。
3) 使用 <a4j:region> 以及 renderRegionOnly 属性,而不是 ajaxSingle ,来避免错误信息被其他控件的单独 process 而被清除掉。
4) 使用 bypassUpdate 属性来跳过 Update Model 和 Invoke Application 阶段。
5. 使用 <a4j:actionparam>
1) <a4j:actionparam> 可以被认为是 <f:param> 和 <f:actionListener> 的组合:
· <f:param> - 在 request 中传递参数;
· <f:actionListener> - 设置 Bean property 的值。
2) 与 <f:setPropertyActionListener> 非常相似:
· value 对应 value ;
· assignTo 对应 target ;
· name 、 converter 没有对应。
【注意】因为需要向 request 传递参数,因此 name 属性一定不能少。
3) 不同点:
· <a4j:actionparam> 向 request 传参数,因此当要传的不是 String 的时候,需要 Converter 的支持;而 <f:setPropertyActionListener> 是直接设置 Bean property ,因此它不需要指定 Converter 。
· <f:setPropertyActionListener> 因为是 <f:actionListener> 类的 ActionListener ,因此总比 actionListener 属性类的方法调用的晚(《 JSF 核心编程》)。因此想用 <f:setPropertyActionListener> 给 actionListener 属性类的方法传递数据,恐怕不可行。但 <a4j:actionparam> 兼具两种功能,因此可以用作给 actionListener 属性类的方法传递数据。
· <a4j:actionparam> 既可以给 <a4j:commandButton> 和 <a4j:commandLink> 传递参数,也可以给 <a4j:support> 传递参数。
6. 使用 <a4j:repeat>
1) <a4j:repeat> 与 <h:dataTable> 很相似,用法也接近。不同点在于 Ajax Request 之后 <a4j:repeat> 可以只刷新选中的行或列,而不必刷新整个表格。
2) <a4j:repeat> 的体可以包含多种代码,从 JSF 控件到 HTML ,不一而足。
3) 使用 ajaxKeys 属性对选中列或行进行部分刷新
【注意】通过 reRender 刷新的控件,必须确保它能生成一些标记 markup ;如果组件不生成任何 markup 或者 rendered 设为 false ,则应该将其置于 PlaceHolder 中,比如 <h:panelGrid> 或者 <a4j:outputPanel> 。
· 基本属性:
value 、 var 与 <h:dataTable> 相同;
rowKeyVar 代表行号的变量名, String 类型。
· ajaxKeys 属性,指向一个 java.util.Set 对象,其中包含着需要被刷新的行号,从 0 开始计数,接受 EL 表达式;
· 每一行里引发 Ajax Request 的控件的 reRender 属性决定哪些列要被刷新;而 ajaxKeys 决定哪些行要被更新。这两个属性精确定位了需要刷新的“单元格”,从而实现页面的部分刷新。
<rich:panel header="a4j:repeat Test">
<table>
<a4j:repeat value="#{nameListBean.nameList}" var="name"
rowKeyVar="rowNo" ajaxKeys="#{nameListBean.rowsToUpdate}">
<tr>
<td>
<h:outputText value="#{rowNo}"></h:outputText>
</td>
<td>
<h:outputText id="fullName" value="#{name.fullName}"></h:outputText>
</td>
<td>
<h:inputText id="firstName" value="#{name.firstName}">
<a4j:support event="onblur"
actionListener="#{nameListBean.refreshRowsToUpdate}"
reRender="fullName">
<a4j:actionparam name="rowNo" value="#{rowNo}"
assignTo="#{nameListBean.currentRow}"/>
</a4j:support>
</h:inputText>
</td>
<td>
<h:inputText id="lasttName" value="#{name.lastName}">
<a4j:support event="onblur"
actionListener="#{nameListBean.refreshRowsToUpdate}"
reRender="fullName">
<a4j:actionparam name="rowNo" value="#{rowNo}"
assignTo="#{nameListBean.currentRow}"/>
</a4j:support>
</h:inputText>
</td>
</tr>
</a4j:repeat>
</table>
</rich:panel>
7. 使用 <a4j:status>
1) <a4j:status> 可以用来显示 Ajax Request 发送和结束的状态。
2) 可以引发 Ajax Request 的那四个 <a4j> 控件都可以通过‘ status ’属性来指定 <a4j:status> 控件。
3) <a4j:status> 也可以被指定给 Region 。
4) <a4j:status> 的主要属性:
· startText 和 stopText
· <f:facet name=”start”> 和 <f:facet name=”stop”> ,任何 JSF 控件都可以加进来,包括 GraphicImage
5) 将 Status 指定给 Region
· 无需特别操作,只将 <a4j:status> 放在 Region 内即可;
· <a4j:status> 只为所在的 Region 服务,所在 Region 内部或外部的 Region 都不服务;
· <a4j:status> 也可以用其自身的 left 、 top 等属性精确定位。
8. 使用 <a4j:include> 和 <a4j:keepAlive>
1) 可以使用 <a4j:include> 在父 View 中包含子 View ,而子 View 仍然可以像正常 JSF 一样,按照导航规则导航。通常用来做向导之类的页面。
2) <a4j:include viewId="/step1.xhtml"/> 可以被放置于页面的任何位置。
【注意】 viewId 属性应该以“ / ”开头。
3) 在 faces-config.xml 中为子 View 定义导航规则, <from-view-id> 应该是子 View 的 view id 。
4) 使用 <a4j:keepAlive>
· 可以使 requestScope 的 bean 的生命长于 request 而又短于 Session ;
· name 属性指向 managed bean 的名字,而不是 EL 表达式;
· 原理在于, name 属性所指向的 bean ,在页面 render 之前被存储;当下一个 Request 到来时, bean 又被倒回 request ,而其之前的值仍然可用。
· 默认情况下, <a4j:keepAlive> 也可以为非 Ajax 请求服务;要想限制其只为 Ajax Request 服务,则要将其 ajaxOnly 属性设为 true 。
9. 使用 <a4j:jsFunction>
1) <a4j:jsFunction> 与其他四种可以引发 Ajax Request 的控件非常相似;不同点在于 <a4j:commandButton> 、 <a4j:support> 是通过 DHTML event 引发 Ajax Request ,而 <a4j:jsFunction> 是通过自定义的 JavaScript 函数来引发 Ajax Request 。当自定义 JavaScript 函数被调用的时候, Ajax Request 被引发。
2) <a4j:jsFunction> 也包含 action 、 actionListener 、 reRender 等属性,也可以包含 <f:param> 或 <a4j:actionparam> 。
3) <a4j:jsFunction> 也可以像 <a4j:commandButton> 一样作为独立控件使用,而不是像 <a4j:support> 一样。
10. 使用 <a4j:ajaxListener>
1) 该 Listener 只在 Render Response 阶段被调用,因此它总是会被调用到,不会被跳过。
2) 该 Listener 只为 Ajax Request 所调用。
3) 通常用来检查或设置需要被 render 的控件
from:http://blog.csdn.net/gengv/archive/2009/06/06/4248443.aspx
1) 以下两个属性用来避免由频繁的 DHTML 事件所引发大量的 request 请求。
· eventsQueue
· requestDelay
2) 对于能够引发 Ajax Request 的 4 种控件来说,以上两种属性都是可用的。
3) eventQueue 属性
· 将 eventQueue 属性指定一个对列名,则在当前一个 Request 被 Server 处理而 Response 还未被发回之前,下一个 Request 都将停留在队列里,以等待 Response 被发回。
· 队列里总保持只有一个待发的 Request ,所有后续的 Request 都会将前面未发的 Request 清除掉。
比如,当你在 <a4j:support event=”onkeyup”> 的文本框中输入第一个字符‘ a ’,则第一个 Request 会被立即发到 Server ,但在 Response 被发回之前,你又输入了‘ b ’,则文本框里的值变为‘ ab ’,但这个 Request 只能等待第一个 Response 被发回来以后才能被送出。而此时,你又输入了第三个字符‘ c ’,则‘ abc ’的 Request 就回把队列里还没来得及发出去的‘ ab ’的 Request 清除掉。此时,第一个 Response “终于”回来了,则‘ abc ’的 Request 才被顺利的发出去。
· 大致测试了一下,当多个控件将队列名都设为同一个的时候,比如 eventsQueue = fooQueue ,控件之间的 Request 不会相互干扰,也就是说控件 B 的新的 Request ,并不会把同一队列中控件 A 的未发的旧 Request 清除掉。
4) requestDelay 属性
· 单位毫秒 ms ,用来定义 Request 被发送出去之前,需要在队列里强制等待的时间。即使前面一个 Request 都没有,也必须老老实实等着到点。
· 可以将 eventsQueue 和 requestDelay 一起使用。
5) ignoreDupResponse 属性
· 将此属性设为 true ,则当同一控件发出新的 Request 的时候,当前的 Response 将被 Ajax 忽略掉。
注意,之前的 Request 在 Server 上已经被处理,只是 Response 在 Client 上被忽略掉了。
· eventsQueue 和 ignoreDupResponse 的区别在于:
前者的 Response 总是会被 Client 处理,然后队列中的 Request 才被发出,属于“先来后到”;而对于后者来说,一旦发现同一控件又有了新的 Request ,则立即抛弃现有的 Response ,属于“喜新厌旧”。
· 如果设置了 ignoreDupResponse 而没有设置 eventsQueue ,则系统会根据控件的 ID 创建一个默认的事件队列。
2. JavaScript 交互
1) 调用自定义的 JavaScript 函数
尽管使用 RichFaces 时不用写 JavaScript ,但 RichFaces 仍然允许你调用自定义的 JavaScript 函数。
· onsubmit :仅当 Ajax Request 被发送之前;
· onbeforedomupdate :仅当 DOM 更新被处理之前;
· oncomplete : 当 DOM 更新被处理完毕之后。
2) data 属性
· 可以从 Server 上得到任何额外的数据,可以通过 EL 表达式简单地将 data 属性指向 bean property ,然后数据将会按照 JSON 的格式串行化到客户端。比如:
<a4j:commandButton value="Submit" reRender="out"
data="#{bean.text}" oncomplete="alert(data)"/>
· 除了基础类型,其他可以被串行化的复杂类型(数组、集合),也可以加入 JSON 格式。
3. 性能方面的考虑
1) 使用 eventsQueue 和 requestDelay
2) 使用 bypassUpdate 属性
当此属性设为 true 的时候, Update Model 和 Invoke Application 阶段将会被跳过,从而缩短响应时间。通常用在表单验证上。
3) 使用 <a4j:region>
· 当 renderRegionOnly 属性被设为 true 时, Browser 将只刷新当前 Region ,也就是发出 Ajax Request 的 Region 。对于 Region 以外的, Partial-Page 刷新将不会被处理。
· 当 renderRegionOnly 属性被设为 true 时,只有同时 满足以下两点的部分会被刷新:
控件必须在引发 Ajax Request 的 Region 里;
被设置为需要刷新(在当前 Region 的其他控件的 reRender 里或者在 <a4j:outputPanel ajaxRendered=”true”> 里)。
其他的部分一概不会被刷新。
· selfRendered 属性
4. 验证用户输入(实例)
1) 使用 <a4j:region> 或者 ajaxSingle 属性来限制 process 的 Region ,以避免控件间相互干扰。
2) 使用 <rich:message> 来显示错误信息。
3) 使用 <a4j:region> 以及 renderRegionOnly 属性,而不是 ajaxSingle ,来避免错误信息被其他控件的单独 process 而被清除掉。
4) 使用 bypassUpdate 属性来跳过 Update Model 和 Invoke Application 阶段。
5. 使用 <a4j:actionparam>
1) <a4j:actionparam> 可以被认为是 <f:param> 和 <f:actionListener> 的组合:
· <f:param> - 在 request 中传递参数;
· <f:actionListener> - 设置 Bean property 的值。
2) 与 <f:setPropertyActionListener> 非常相似:
· value 对应 value ;
· assignTo 对应 target ;
· name 、 converter 没有对应。
【注意】因为需要向 request 传递参数,因此 name 属性一定不能少。
3) 不同点:
· <a4j:actionparam> 向 request 传参数,因此当要传的不是 String 的时候,需要 Converter 的支持;而 <f:setPropertyActionListener> 是直接设置 Bean property ,因此它不需要指定 Converter 。
· <f:setPropertyActionListener> 因为是 <f:actionListener> 类的 ActionListener ,因此总比 actionListener 属性类的方法调用的晚(《 JSF 核心编程》)。因此想用 <f:setPropertyActionListener> 给 actionListener 属性类的方法传递数据,恐怕不可行。但 <a4j:actionparam> 兼具两种功能,因此可以用作给 actionListener 属性类的方法传递数据。
· <a4j:actionparam> 既可以给 <a4j:commandButton> 和 <a4j:commandLink> 传递参数,也可以给 <a4j:support> 传递参数。
6. 使用 <a4j:repeat>
1) <a4j:repeat> 与 <h:dataTable> 很相似,用法也接近。不同点在于 Ajax Request 之后 <a4j:repeat> 可以只刷新选中的行或列,而不必刷新整个表格。
2) <a4j:repeat> 的体可以包含多种代码,从 JSF 控件到 HTML ,不一而足。
3) 使用 ajaxKeys 属性对选中列或行进行部分刷新
【注意】通过 reRender 刷新的控件,必须确保它能生成一些标记 markup ;如果组件不生成任何 markup 或者 rendered 设为 false ,则应该将其置于 PlaceHolder 中,比如 <h:panelGrid> 或者 <a4j:outputPanel> 。
· 基本属性:
value 、 var 与 <h:dataTable> 相同;
rowKeyVar 代表行号的变量名, String 类型。
· ajaxKeys 属性,指向一个 java.util.Set 对象,其中包含着需要被刷新的行号,从 0 开始计数,接受 EL 表达式;
· 每一行里引发 Ajax Request 的控件的 reRender 属性决定哪些列要被刷新;而 ajaxKeys 决定哪些行要被更新。这两个属性精确定位了需要刷新的“单元格”,从而实现页面的部分刷新。
<rich:panel header="a4j:repeat Test">
<table>
<a4j:repeat value="#{nameListBean.nameList}" var="name"
rowKeyVar="rowNo" ajaxKeys="#{nameListBean.rowsToUpdate}">
<tr>
<td>
<h:outputText value="#{rowNo}"></h:outputText>
</td>
<td>
<h:outputText id="fullName" value="#{name.fullName}"></h:outputText>
</td>
<td>
<h:inputText id="firstName" value="#{name.firstName}">
<a4j:support event="onblur"
actionListener="#{nameListBean.refreshRowsToUpdate}"
reRender="fullName">
<a4j:actionparam name="rowNo" value="#{rowNo}"
assignTo="#{nameListBean.currentRow}"/>
</a4j:support>
</h:inputText>
</td>
<td>
<h:inputText id="lasttName" value="#{name.lastName}">
<a4j:support event="onblur"
actionListener="#{nameListBean.refreshRowsToUpdate}"
reRender="fullName">
<a4j:actionparam name="rowNo" value="#{rowNo}"
assignTo="#{nameListBean.currentRow}"/>
</a4j:support>
</h:inputText>
</td>
</tr>
</a4j:repeat>
</table>
</rich:panel>
7. 使用 <a4j:status>
1) <a4j:status> 可以用来显示 Ajax Request 发送和结束的状态。
2) 可以引发 Ajax Request 的那四个 <a4j> 控件都可以通过‘ status ’属性来指定 <a4j:status> 控件。
3) <a4j:status> 也可以被指定给 Region 。
4) <a4j:status> 的主要属性:
· startText 和 stopText
· <f:facet name=”start”> 和 <f:facet name=”stop”> ,任何 JSF 控件都可以加进来,包括 GraphicImage
5) 将 Status 指定给 Region
· 无需特别操作,只将 <a4j:status> 放在 Region 内即可;
· <a4j:status> 只为所在的 Region 服务,所在 Region 内部或外部的 Region 都不服务;
· <a4j:status> 也可以用其自身的 left 、 top 等属性精确定位。
8. 使用 <a4j:include> 和 <a4j:keepAlive>
1) 可以使用 <a4j:include> 在父 View 中包含子 View ,而子 View 仍然可以像正常 JSF 一样,按照导航规则导航。通常用来做向导之类的页面。
2) <a4j:include viewId="/step1.xhtml"/> 可以被放置于页面的任何位置。
【注意】 viewId 属性应该以“ / ”开头。
3) 在 faces-config.xml 中为子 View 定义导航规则, <from-view-id> 应该是子 View 的 view id 。
4) 使用 <a4j:keepAlive>
· 可以使 requestScope 的 bean 的生命长于 request 而又短于 Session ;
· name 属性指向 managed bean 的名字,而不是 EL 表达式;
· 原理在于, name 属性所指向的 bean ,在页面 render 之前被存储;当下一个 Request 到来时, bean 又被倒回 request ,而其之前的值仍然可用。
· 默认情况下, <a4j:keepAlive> 也可以为非 Ajax 请求服务;要想限制其只为 Ajax Request 服务,则要将其 ajaxOnly 属性设为 true 。
9. 使用 <a4j:jsFunction>
1) <a4j:jsFunction> 与其他四种可以引发 Ajax Request 的控件非常相似;不同点在于 <a4j:commandButton> 、 <a4j:support> 是通过 DHTML event 引发 Ajax Request ,而 <a4j:jsFunction> 是通过自定义的 JavaScript 函数来引发 Ajax Request 。当自定义 JavaScript 函数被调用的时候, Ajax Request 被引发。
2) <a4j:jsFunction> 也包含 action 、 actionListener 、 reRender 等属性,也可以包含 <f:param> 或 <a4j:actionparam> 。
3) <a4j:jsFunction> 也可以像 <a4j:commandButton> 一样作为独立控件使用,而不是像 <a4j:support> 一样。
10. 使用 <a4j:ajaxListener>
1) 该 Listener 只在 Render Response 阶段被调用,因此它总是会被调用到,不会被跳过。
2) 该 Listener 只为 Ajax Request 所调用。
3) 通常用来检查或设置需要被 render 的控件
from:http://blog.csdn.net/gengv/archive/2009/06/06/4248443.aspx
发表评论
-
seam前端提速
2010-09-08 13:11 1389Seam使用了richfaces做为jsf ... -
seam topic
2010-08-25 16:58 2218Forum: Seam Users Forum ListTop ... -
maven 中使用jetty 改端口号
2010-08-04 13:52 1405jetty 使用时,如果出现 address already ... -
seam空格
2010-07-23 09:59 711seam空格:&nbps;没用 ,要使用 ... -
null value seam
2010-07-23 09:33 533因为给model添加一个double类型的字段(数据库已有一些 ... -
Seam el 中使用 map
2010-06-29 15:23 1295一直以为在el里不能用map,今天发现原来可以... @na ... -
seam pdf The document has no pages
2010-06-28 13:31 1773用seam 中的pdf功能时 出现The document h ... -
JSF多对多增加
2010-06-25 17:04 933多对多关系时 person (n-n) work (perso ... -
JSF Chapter11
2010-06-24 13:14 8731. 使用内建的 Skins 1) 基 ... -
JSF Chapter10
2010-06-24 13:13 1196. <rich:scrollableDataT ... -
JSF Chapter09
2010-06-24 11:35 10581. <rich:dropDownM ... -
JSF Chapter08
2010-06-24 11:34 13231. <rich:pickList> ... -
JSF Chapter07
2010-06-24 11:34 15891. 常用的 dataTable 类的控件有: l ... -
JSF Chapter06
2010-06-24 11:20 1751. <rich:panel> 1) ... -
JSF Chapter05
2010-06-24 11:18 16811. a4j: 提供了页面级的 Ajax 支持,也 ... -
JSF Chapter03
2010-06-24 11:14 1494本章主要包括三方面内 ... -
JSF Chapter02
2010-06-24 11:13 9651. 配置 RichFaces 1) ... -
JSF Chapter01
2010-06-24 11:12 9261. JSF’s View = UICompone ... -
JSF Chapter04(频繁调用控件)
2010-06-24 11:06 13611. <!-- [end ... -
Property '****' is not writable on type
2010-04-28 22:20 1121再用seam+jsf开发的时候冒出:***Edit.xhtml ...
相关推荐
资源名称:精通JSF—基于EJBHibernateSpring开发实践视频教程资源目录:【】chapter13_code【】Jsf第七章【】JSF第二章【】Jsf第五章【】Jsf第八章【】Jsf第六章【】Jsf第十三章【】Jsf第十五章【】Jsf第十六章【】...
首先,我们可以看到文件名中有`chapter9_details.html`,这可能是一个关于第九章详细内容的HTML文档,通常这样的文件会包含讲解和示例代码的解释,可能涵盖了JSF组件的使用、事件处理、转换和验证等关键主题。...
在"chapter16"这个文件中,可能涵盖了JSF的高级主题,例如: - **自定义组件**:如果开发者需要扩展JSF的默认组件库,可以创建自定义组件,这涉及到UIComponent子类的继承和渲染过程的理解。 - **导航管理**:JSF的...
下面我们将详细探讨JSF的核心概念、关键组件以及`build.properties.sample`和`chapter05`可能包含的内容。 **JSF框架概述:** JSF是Java EE的一部分,旨在简化Web开发,通过提供UI组件、事件处理和数据绑定等功能来...
书本源码中的各个章节代码文件,如chapter3_code到chapter10_code,分别对应书中各章节的实例代码。这些代码实例通常会展示如何在实际项目中应用JSF、EJB、Hibernate和Spring进行整合,包括但不限于以下知识点: 1....
Chapter 3: JSF Component Libraries Chapter 4: Interacting with Databases through the Java Persistence API Chapter 5: Implementing the Business Tier with Session Beans Chapter 6: Contexts and ...
在本章"使用JSP开发Web应用...在后续章节中,你还会接触到更多高级主题,如EL(Expression Language)、JSF(JavaServer Faces)以及现代Web框架如Spring MVC的使用。持续学习和实践,将使你成为一位熟练的Web开发者。
在这个"chapter3"的例子中,你可能会看到以下内容: - 一个简单的JSF页面,展示了Seam组件如何与JSF页面交互。 - 一个Seam组件类,可能包含一些业务逻辑或数据访问操作。 - 相关的配置文件,如`pom.xml`(如果使用...