﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-零雨其蒙's Blog -文章分类-Oracle EBS</title><link>http://www.blogjava.net/sslaowan/category/49284.html</link><description>做优秀的程序员</description><language>zh-cn</language><lastBuildDate>Tue, 02 Aug 2011 13:07:08 GMT</lastBuildDate><pubDate>Tue, 02 Aug 2011 13:07:08 GMT</pubDate><ttl>60</ttl><item><title> PPR</title><link>http://www.blogjava.net/sslaowan/articles/355583.html</link><dc:creator>零雨其蒙</dc:creator><author>零雨其蒙</author><pubDate>Tue, 02 Aug 2011 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/sslaowan/articles/355583.html</guid><wfw:comment>http://www.blogjava.net/sslaowan/comments/355583.html</wfw:comment><comments>http://www.blogjava.net/sslaowan/articles/355583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sslaowan/comments/commentRss/355583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sslaowan/services/trackbacks/355583.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><div><a href="http://blog.csdn.net/jarden08/archive/2007/08/23/1755657.aspx" style="color: #108ac6; text-decoration: underline; ">http://blog.csdn.net/jarden08/archive/2007/08/23/1755657.aspx</a></div><div><span style="font-size: 9pt; ">PPR : oracle</span><span style="font-size: 9pt; ">的一种局部页面刷新技术，在此之前只有</span><span style="font-size: 9pt; ">java</span><span style="font-size: 9pt; ">的</span><span style="font-size: 9pt; ">js</span><span style="font-size: 9pt; ">脚本可以实现此功能，现在</span><span style="font-size: 9pt; ">ppr</span><span style="font-size: 9pt; ">技术，并不是支持所有的浏览器，他现在仅仅支持的浏览器版本为</span><span style="font-size: 9pt; ">IE 5.5&nbsp;</span><span style="font-size: 9pt; ">以上</span><span style="font-size: 9pt; ">, Mozilla&nbsp;</span><span style="font-size: 9pt; ">和</span><span style="font-size: 9pt; ">Netscape 7</span></div><div><span style="font-size: 9pt; ">基本原理：</span></div><div><span style="font-size: 9pt; ">1 PPR</span><span style="font-size: 9pt; ">是提供给一个局部需要刷新的页面，所有不要使用</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">技术在一个大部分区域需要刷新的页面上，还有就是不要使用</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">技术在一个内容需要花费长时间去查询的区域上。</span></div><div><span style="font-size: 9pt; ">2&nbsp;</span><span style="font-size: 9pt; ">不同于整个页面的重载，</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">并不关注顶层的页面，只是对页面中的小部分分割区域进行刷新。</span></div><div><span style="font-size: 9pt; ">3 PPR</span><span style="font-size: 9pt; ">技术中，提交按钮可以通过选择列表或者是</span><span style="font-size: 9pt; ">radio group</span><span style="font-size: 9pt; ">组件被忽略掉。</span></div><div><span style="font-size: 9pt; ">4&nbsp;</span><span style="font-size: 9pt; ">在导航到一个不同</span><span style="font-size: 9pt; ">title</span><span style="font-size: 9pt; ">的页面的时候，不要使用</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">，这时应该使用</span><span style="font-size: 9pt; ">GO</span><span style="font-size: 9pt; ">按钮。</span></div><div><span style="font-size: 9pt; ">5&nbsp;</span><span style="font-size: 9pt; ">浏览器的历史记录里面不会跟踪相关页面的</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">区域中的信息。</span></div><div><span style="font-size: 9pt; ">6&nbsp;</span><span style="font-size: 9pt; ">在不支持</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">技术的浏览器中，</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">区域在被下载到本地之后会自动失效。</span></div><div><span style="font-size: 9pt; ">7&nbsp;</span><span style="font-size: 9pt; ">在执行一个</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">的更新的时候，会有一段滞留时间：在这段时间内，页面会有一个沙漏出现，并且用户不能在对页面进行任何操作知道区域的内容被完全装载。如果更新失败的话，</span><span style="font-size: 9pt; ">envent block</span><span style="font-size: 9pt; ">将会被清空，然后页面并不发生任何更改（即数据没有被更新），用户可以进行操作。开发人员可以定义各个</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">的刷新时间。这样，每个区域就可以根据需要设定不同的刷新时间。</span><span style="font-size: 9pt; ">event block</span><span style="font-size: 9pt; ">很重要，由于</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">可以改变页面的状态，因此页面上的一些个并发的点击或者是关键的入口处的状态应该被保留下来。</span></div><div><span style="font-size: 9pt; ">8&nbsp;</span><span style="font-size: 9pt; ">当</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">更新失败的时候，一个</span><span style="font-size: 9pt; ">javascript</span><span style="font-size: 9pt; ">的一个错误信息应该被抛出，例如更新失败，服务器没有相应，超时，或者网络堵塞等。这个时候</span><span style="font-size: 9pt; ">BLAF</span><span style="font-size: 9pt; ">的一些消息不应该用在这中条件下，如果应用程序这麽做的结果可能导致用户的数据丢失。所以用</span><span style="font-size: 9pt; ">javascript</span><span style="font-size: 9pt; ">是最安全的方法。</span></div><div><span style="font-size: 9pt; ">并不是所有的</span><span style="font-size: 9pt; ">OAF</span><span style="font-size: 9pt; ">控件都可以在</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">中发生变化的，具体如下</span></div><div><strong style="font-weight: bold; "><span style="font-size: medium; ">在页面中不会发生改变的页面元素</span></strong></div><div><span style="font-size: 9pt; ">很多的页面元素通常关联到了页面上，而不关心</span><span style="font-size: 9pt; "><br /></span><span style="font-size: 9pt; ">遵照一些开发准则，页面标题上的元素（除了</span><span style="font-size: 9pt; ">Message Box</span><span style="font-size: 9pt; ">）会保持不变，不会发生任何位置上的变化</span>&nbsp;<span style="font-size: 9pt; ">，与之不同的是在</span><span style="font-size: 9pt; ">Ski</span><span style="font-size: 9pt; ">下的一些元素会保持内容，但是在页面上的位置会发生变化，会上下移动来适应页面的内容，下面的一些元素永远不会发生变化在</span><span style="font-size: 9pt; ">PPR</span><span style="font-size: 9pt; ">中：</span></div><ul type="disc" style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Branding</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Global buttons</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Tabs, Horizontal Navigation, SubTabs</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Locator elements: Breadcrumbs, Train, Next/Back Locator</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Quick links</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page titles (first level header)</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Ski</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page footer</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Separator lines between the Tabs and Page Title</span></li></ul><div><span style="font-size: 9pt; "><br /></span><span style="font-size: 9pt; ">大多数情况下下面的一些元素也不会发生变化，但是会上下移动，来适应页面的其他元素的变化</span><span style="font-size: 9pt; ">.&nbsp;</span><span style="font-size: 9pt; ">不过，有一些特殊的情况下会导致他们也发生变化：</span></div><ul type="disc" style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Side Navigation, unless it contains a Hide/Show control.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Subtabs</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Contextual information</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page-level action/navigation buttons</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page-level Instruction text</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page-level Page stamps</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page-level Key Notation</span></li></ul><div><span style="font-size: 9pt; "><br />&nbsp;</span></div><div><strong style="font-weight: bold; "><span style="font-size: medium; ">可以在PPR中进行更改的页面元素</span></strong></div><div><span style="font-size: 9pt; ">大多数页面上的其他的一些区域中的内容都会被独立的添加，更改或者是删除。包括：</span></div><ul type="disc" style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Section and table titles (subheaders)</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Section-level elements associated with a section title:</span><ul type="circle" style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Hide/Show link</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Instruction text</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Key notation</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Page stamps</span></li></ul></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Label/data layout, including Action/Nav buttons, choice lists, and links.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Tables and table elements</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">HGrids</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Trees</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Graphs</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Content containers</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; "><span style="font-size: 9pt; ">Tips and Hints</span></li></ul><div><a href="http://blog.csdn.net/jarden08/archive/2007/08/24/1757548.aspx" style="color: #108ac6; text-decoration: underline; ">http://blog.csdn.net/jarden08/archive/2007/08/24/1757548.aspx</a></div><div></div><div>要启用PPR功能在当前页面，你必须创建一个OAF标准的应用属性VO（PVO）该PVO包含了一个临时属性用来保存或者说是记录需要变化的区域的Rendered属性的状态，这个VO最终会包含一个单行，允许用户在和页面进行交互时进行初始化和更新，后面将会详细描述怎样将变化区域和该VO进行绑定，以检测时候该区域是否需要显示，你需要配置另外一个开关，通过改变该开关的值，来确定是否要触发PPR事件。<br />PVO应该同其更级别的am创建在一个包中，注意对于一个AM你只能创建一个POV，命名规则如下：相关的am的名称+PVO<br />这里要注意的是，创建之后的PVO在tuning属性中必须勾选启用钝化功能，还有For All Transient Attributes选项。</div></span></div><img src ="http://www.blogjava.net/sslaowan/aggbug/355583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sslaowan/" target="_blank">零雨其蒙</a> 2011-08-02 13:32 <a href="http://www.blogjava.net/sslaowan/articles/355583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OAF Lov基本知识</title><link>http://www.blogjava.net/sslaowan/articles/355580.html</link><dc:creator>零雨其蒙</dc:creator><author>零雨其蒙</author><pubDate>Tue, 02 Aug 2011 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/sslaowan/articles/355580.html</guid><wfw:comment>http://www.blogjava.net/sslaowan/comments/355580.html</wfw:comment><comments>http://www.blogjava.net/sslaowan/articles/355580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sslaowan/comments/commentRss/355580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sslaowan/services/trackbacks/355580.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><h3><div><span style="font-size: 12px; font-weight: normal; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="font-weight: bold; "><span style="font-size: large; ">JavaDoc</span></strong></p><h3>getLovCriteriaItems</h3><pre style="font-family: monospace; font-size: 1em; ">public <a title="class or interface in java.util" href="http://java.sun.com/j2se/1.3/docs/api/java/util/Dictionary.html" style="color: #108ac6; text-decoration: underline; ">Dictionary</a> <strong style="font-weight: bold; ">getLovCriteriaItems</strong>()</pre><dl style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Used from an LOV region's controller to find out all the values of the passive criteria mappings for that LOV. The returned dictionary is keyed by the name of the LOV region's item.</dd></dl><dl style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">从一个LOV区域的控制器找到为该LOV设置的被动的标准映射的所有值。返回的Dictionary&nbsp;以LOV region的Item作为Key。</p><dl style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><dt style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0.25em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="font-weight: bold; ">Returns:</strong></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Dictionary containing all the names of the LOV region's items that are specified in passive criteria mappings. The corresponding values are what were typed in by the user in the mapped base item. The item name is the key.</dd><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Dictionary&nbsp;包含LOV region的item的名字，这些Item被指定在被动的标准映射里。item的名字是key。</dd></dl></dd></dl><h3>getLovCriteriaViewAttrNames</h3><pre style="font-family: monospace; font-size: 1em; ">public <a title="class or interface in java.util" href="http://java.sun.com/j2se/1.3/docs/api/java/util/Dictionary.html" style="color: #108ac6; text-decoration: underline; ">Dictionary</a> <strong style="font-weight: bold; ">getLovCriteriaViewAttrNames</strong>()</pre><dl style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Used from an LOV region's controller to find out all the values of the passive criteria mappings for that LOV. The returned dictionary is keyed by the view attribute name of the LOV region's item.<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">从LOV region的控制器找到该LOV的被动的标准映射的所有值。返回的dictionary 是以LOV region的item的视图属性名为key的。</p></dd><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><dl style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.4em; "><dt style="margin-top: 0.25em; margin-right: 0px; margin-bottom: 0.25em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="font-weight: bold; ">Returns:</strong></dt><dd style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Dictionary containing all the view attribute name of the LOV region's items that are specified in passive criteria mappings. The corresponding values are what were typed in by the user in the mapped base item. The view attribute name is the key.</dd></dl></dd></dl><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">注意，这两个方法必须写在LOV region的控制器里：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><div style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; font-size: 12px; background-color: transparent; width: 694px; overflow-x: auto; overflow-y: auto; margin-left: 9px; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; "><div><div style="padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; font-weight: bold; ">Java代码&nbsp;<embed src="http://sslaowan.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" width="14" height="15" flashvars="clipboard=%20%20%20%20Dictionary%20dictionary%20%3D%20pageContext.getLovCriteriaViewAttrNames()%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Dictionary%20dictionary%20%3D%20pageContext.getLovCriteriaItems()%3B%0A%20%20%20%20%20%20%20%20%20int%20num%20%3D%20dictionary.size()%3B%0A%20%20%20%20%20%20%20%20%20Enumeration%20keys%20%3D%20dictionary.keys()%3B%0A%20%20%20%20%20%20%20%20%20Enumeration%20elements%20%3D%20dictionary.elements()%3B%0A%20%0A%20%20%20%20%20%20%20%20System.out.println(%20%22%20dictionary.size()%20%3D%20%22%20%2B%20num%20%2B%20%22%2C%22)%3B%0A%20%20%20%20%20%20%20%20int%20i%20%3D%200%3B%0A%20%20%20%20%20%20%20%20while%20(keys.hasMoreElements())%20%7B%0A%20%20%20%20%20%20%20%20%20%20System.out.println(%20%22%20key%5B%22%20%2B%20i%20%2B%20%22%5D%20%3D%20%22%20%2B%20keys.nextElement().toString()%20%2B%20%22%2C%22)%3B%0A%20%20%20%20%20%20%20%20%20%20i%2B%2B%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20System.out.println(%22%20out%20key%20loop%20i%20%3D%20%22%20%2B%20i%20%2B%20%22%2C%22)%3B%0A%20%20%20%20%20%20%20%20i%20%3D%200%3B%0A%20%20%20%20%20%20%20%20while%20(elements.hasMoreElements())%20%7B%0A%20%20%20%20%20%20%20%20%20%20System.out.println(%22%20element%5B%22%20%2B%20i%20%2B%20%22%5D%20%3D%20%22%20%2B%20elements.nextElement().toString()%20%2B%20%22%2C%22)%3B%0A%20%20%20%20%20%20%20%20%20%20i%2B%2B%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20System.out.println(%22%20out%20element%20loop%20i%20%3D%20%22%20%2B%20i%20%2B%20%22%2C%22)%3B" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></div></div><ol start="1" style="font-size: 1em; line-height: 1.4em; margin-top: 0px; margin-right: 0px; margin-bottom: 1px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #d1d7dc; border-right-color: #d1d7dc; border-bottom-color: #d1d7dc; border-left-color: #d1d7dc; list-style-type: decimal; list-style-position: initial; list-style-image: initial; background-color: #ffffff; color: #2b91af; "><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; "><span style="color: black; ">Dictionary&nbsp;dictionary&nbsp;=&nbsp;pageContext.getLovCriteriaViewAttrNames();&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008200; ">//&nbsp;Dictionary&nbsp;dictionary&nbsp;=&nbsp;pageContext.getLovCriteriaItems();</span><span style="color: black; ">&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7f0055; font-weight: bold; ">int</span><span style="color: black; ">&nbsp;num&nbsp;=&nbsp;dictionary.size();&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;keys&nbsp;=&nbsp;dictionary.keys();&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;elements&nbsp;=&nbsp;dictionary.elements();&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;<span style="color: blue; ">"&nbsp;dictionary.size()&nbsp;=&nbsp;"</span><span style="color: black; ">&nbsp;+&nbsp;num&nbsp;+&nbsp;</span><span style="color: blue; ">","</span><span style="color: black; ">);&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7f0055; font-weight: bold; ">int</span><span style="color: black; ">&nbsp;i&nbsp;=&nbsp;</span><span style="color: #c00000; ">0</span><span style="color: black; ">;&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7f0055; font-weight: bold; ">while</span><span style="color: black; ">&nbsp;(keys.hasMoreElements())&nbsp;{&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;<span style="color: blue; ">"&nbsp;key["</span><span style="color: black; ">&nbsp;+&nbsp;i&nbsp;+&nbsp;</span><span style="color: blue; ">"]&nbsp;=&nbsp;"</span><span style="color: black; ">&nbsp;+&nbsp;keys.nextElement().toString()&nbsp;+&nbsp;</span><span style="color: blue; ">","</span><span style="color: black; ">);&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span style="color: blue; ">"&nbsp;out&nbsp;key&nbsp;loop&nbsp;i&nbsp;=&nbsp;"</span><span style="color: black; ">&nbsp;+&nbsp;i&nbsp;+&nbsp;</span><span style="color: blue; ">","</span><span style="color: black; ">);&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;<span style="color: #c00000; ">0</span><span style="color: black; ">;&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7f0055; font-weight: bold; ">while</span><span style="color: black; ">&nbsp;(elements.hasMoreElements())&nbsp;{&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span style="color: blue; ">"&nbsp;element["</span><span style="color: black; ">&nbsp;+&nbsp;i&nbsp;+&nbsp;</span><span style="color: blue; ">"]&nbsp;=&nbsp;"</span><span style="color: black; ">&nbsp;+&nbsp;elements.nextElement().toString()&nbsp;+&nbsp;</span><span style="color: blue; ">","</span><span style="color: black; ">);&nbsp;&nbsp;</span></span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "><span style="color: black; ">&nbsp;&nbsp;&nbsp;System.out.println(<span style="color: blue; ">"&nbsp;out&nbsp;element&nbsp;loop&nbsp;i&nbsp;=&nbsp;"</span><span style="color: black; ">&nbsp;+&nbsp;i&nbsp;+&nbsp;</span><span style="color: blue; ">","</span><span style="color: black; ">);&nbsp;&nbsp;</span></span></li></ol></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">在Base Page上获得Lov是否触发，使用pageContext .isLovEvent()，可以通过pageContext.getLovInputSourceId()获得触发该事件的页面上LovInput的名称。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">可以通过pageContext.getLovResultsFromSession(lovInputSourceId)获得Lov的返回值，用一个HashTable来传递。</p></span></div></h3></span></div><img src ="http://www.blogjava.net/sslaowan/aggbug/355580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sslaowan/" target="_blank">零雨其蒙</a> 2011-08-02 13:31 <a href="http://www.blogjava.net/sslaowan/articles/355580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于VO读取记录</title><link>http://www.blogjava.net/sslaowan/articles/355581.html</link><dc:creator>零雨其蒙</dc:creator><author>零雨其蒙</author><pubDate>Tue, 02 Aug 2011 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/sslaowan/articles/355581.html</guid><wfw:comment>http://www.blogjava.net/sslaowan/comments/355581.html</wfw:comment><comments>http://www.blogjava.net/sslaowan/articles/355581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sslaowan/comments/commentRss/355581.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sslaowan/services/trackbacks/355581.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><h3><div><span style="font-size: 12px; font-weight: normal; "><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getRowCount</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code><span style="font-family: Calibri; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Counts the total number of rows in this row set.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-family: Calibri; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>计算这个行集的行总数</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">This method retrieves all rows from the View Object by executing the View Object's query and then calling<tt><span>next()</span></tt>&nbsp;until the last row is retrieved. Thus, since it iterates through the View Object one record at a time, this method may be slow.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">该方法通过执行视图对象的查询从视图对象中获取所有行，然后调用<span>next()直到最后一行被调用。于是，由于它通过视图对象一次迭代一条记录，因此该方法是比较慢的。</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">If you are working with a large number of rows, or if your application demands a fast response, use<a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>getEstimatedRowCount</span></code></a>&nbsp;to obtain a quicker count.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">如果你操作一大堆行，或者你的应用需要一个快速的响应，使用<span><a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>getEstimatedRowCount</span></code></a></span>获得一个更快的数量。</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">The following sample code uses&nbsp;<tt><span>getRowCount()</span></tt>&nbsp;to set up separate iterators for even numbered and odd numbered rows:</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">下面的代码使用<tt><span>getRowCount()</span></tt><tt>为基数和偶数行创立独立的迭代器。</tt></span></p><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; ">&nbsp;// Default iterator gets even-numbered rows.</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "> // Second iterator gets odd-numbered rows.</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "> long nRows = vo.getRowCount();</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "> String msg = "";</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "> for (int i = 0; i &lt; nRows; i +=2) {</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; ">&nbsp;</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get and set row index values relative to a range.</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Index of first row = 0.</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vo.setCurrentRowAtRangeIndex(i);</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row currRow = vo.getCurrentRow();</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = "&nbsp;Default iterator (even): " + vo.getRangeIndexOf(currRow);</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printRow(currRow, msg);</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; ">&nbsp;</span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; secondIter.setCurrentRowAtRangeIndex(i + 1);</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currRow = secondIter.getCurrentRow();</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg = "&nbsp;Second iterator (odd): " + vo.getRangeIndexOf(currRow);</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printRow(secondIter.getCurrentRow(), msg);</span></span></pre><pre style="font-family: monospace; font-size: 1em; "><span style="font-size: 10.5pt; "><span>&nbsp;&nbsp;&nbsp; }</span></span></pre><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getRowCountInRange</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code><span style="font-family: Calibri; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Counts the rows actually in the range.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span><span style="font-family: Calibri; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>计算范围内的实际行数<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "></strong></code></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getRowCountInRange</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code>&nbsp;：<span style="font-family: Calibri; ">int<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the size of the current&nbsp;</span><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">RowSet's</span></code><span style="font-family: Calibri; ">&nbsp;range</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 21pt; ">获得当前<span style="font-family: Calibri; ">RowSet</span>（记录集）的范围大小。</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getFetchedRowCount</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code>&nbsp;：<span style="font-family: Calibri; ">int<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Counts the number of rows fetched from the JDBC result set.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span><span style="font-family: Calibri; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>计算从<span style="font-family: Calibri; ">JDBC</span>结果集抓取的行数。</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">This method delegates to the default RowSetIterator.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">This method can be used to determine whether the View Object has read all the rows from the cursor. For example,&nbsp;<a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>getEstimatedRowCount</span></code></a>&nbsp;returns an equivalent of&nbsp;<tt><span>count(*)</span></tt>&nbsp;on the View Object. The<tt>getFetchedRowCount()</tt>&nbsp;method returns the count of rows already fetched. If&nbsp;<tt>getFetchedRowCount()</tt>&nbsp;returns a value less than&nbsp;<tt>getEstimatedRowCount()</tt>, then the View Object has not read all rows from the cursor.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">该方法被用于确定视图对象是否从游标中读取所有的行。例如，<span><a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>getEstimatedRowCount</span></code></a></span>返回视图对象上count(*)相等的量。<tt>getFetchedRowCount()</tt><tt>方法只返回已经抓取的行数。如果<span>getFetchedRowCount()返回的值小于getEstimatedRowCount()，那么视图对象没有从游标中读到所有行。</span></tt></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">&nbsp;</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getEstimatedRowCount</a></span></code></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; "><span>&nbsp;&nbsp;&nbsp; </span></span></code>Makes an estimated count of the rows in this row set.</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">This method estimates the number of rows in the row count by calling&nbsp;<a style="color: #108ac6; text-decoration: underline; ">getQueryHitCount</a>&nbsp;(which performs a SELECT COUNT (*) FROM&nbsp;<em style="font-style: italic; ">table</em>). Internal logic in Business Components for Java keeps the EstimatedRowCount up-to-date as rows are inserted and removed. Thus, after the first call to this method, it can return the estimated count quickly.</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">For example:</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">&nbsp;// Get the rowcount again because of deleted or inserted row</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">&nbsp;rowCount = (int) iter.getRowSet().getEstimatedRowCount();</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">&nbsp;</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">If you are working with a large number of rows, or if your application demands a fast response, use this method instead of<a style="color: #108ac6; text-decoration: underline; ">getRowCount</a>.</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">Note however, that this method might not be as accurate as getRowCount().</p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; "><span style="color: #ff0000; ">注意：但是，这个方法可能没有<span>getRowCount准确。</span></span></p><p align="left" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-align: left; ">To test whether the View Object has read all the rows from the cursor, you can use getEstimatedRowCount() in conjunction with getFetchedRowCount(). For example, getEstimatedRowCount() returns an equivalent of count(*) on the View Object. The&nbsp;<a style="color: #108ac6; text-decoration: underline; ">getFetchedRowCount</a>&nbsp;method returns the count of rows already fetched. If getFetchedRowCount() returns a value less than getEstimatedRowCount(), then the View Object has not read all rows from the cursor.</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getFetchSize</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code><span style="font-family: Calibri; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the row pre-fetch size.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span><span style="font-family: Calibri; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>获得行的预先抓取大小</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span><span><span style="font-size: small; ">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10.5pt; ">&nbsp;The framework will use this value to set the JDBC row pre-fetch size. Note that the row pre-fetch size has performance ramifications. A larger fetch size is more expensive in terms of memory usage than a smaller size. The default fetch size is 1 row.</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">框架将使用这个值去设定<span>JDBC行预抓取大小。注意行预抓取大小影响性能。比较大的抓取大小就内存使用而言比小的抓取大小要更昂贵。 默认的抓取大小是一行。</span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">If the value of&nbsp;<a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>setFetchMode(byte)</span></code></a>&nbsp;is&nbsp;<tt><span>FETCH_ALL</span></tt>, then the value of&nbsp;<tt>setFetchSize</tt>&nbsp;is disregarded.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">如果<span>setFetchMode的值是FETCH_ALL,则<tt>setFetchSize</tt><tt>将被忽略。</tt></span></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">For each View Object, this method is customizable. Deciding what value to use could be made at runtime based on how many rows are expected for a particular View Object.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">对于每个视图对象，这种方法是可定制的。可以在运行时基于一个特定视图对象预期的行数决定使用什么值进行设定。</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; "><a style="color: #108ac6; text-decoration: underline; ">getRangeSize</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code><span style="font-family: Calibri; ">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the range size of the iterator.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; "><span><span style="font-family: Calibri; ">&nbsp;&nbsp;&nbsp;&nbsp;</span></span>获得迭代器的范围大小。</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; "><strong style="font-weight: bold; ">测试代码：</strong></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">PerAllPeopleVOImpl employerInstance=(PerAllPeopleVOImpl) this.getPerAllPeopleVO1();<br />&nbsp;&nbsp;&nbsp;&nbsp; int fetchedRowCount=employerInstance.getFetchedRowCount();<br />&nbsp;&nbsp;&nbsp;&nbsp; int rowCount=employerInstance.getRowCount();<br />&nbsp;&nbsp;&nbsp;&nbsp; int rowCountInRange=employerInstance.getRowCountInRange();<br />&nbsp;&nbsp;&nbsp;&nbsp; long estimatedRowCount= employerInstance.getEstimatedRowCount();<br />&nbsp;&nbsp;&nbsp;&nbsp; int rangeSize=employerInstance.getRangeSize();<br />&nbsp;&nbsp;&nbsp;&nbsp; int fetchSize=employerInstance.getFetchSize();<br />&nbsp;&nbsp;&nbsp;&nbsp; int allRowLength=employerInstance.getAllRowsInRange().length;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;&nbsp;&nbsp; int employerCount=0;<br />&nbsp;&nbsp;&nbsp;&nbsp; while(employerInstance.hasNext())<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PerAllPeopleVORowImpl eachEmployer= (PerAllPeopleVORowImpl)employerInstance.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String empName= eachEmployer.getLastName();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; employerCount++;<br />&nbsp;&nbsp;&nbsp;&nbsp; }</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;&nbsp;&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;&nbsp; &nbsp;logInfo("fetchedRowCount is "+fetchedRowCount);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("rowCount is "+rowCount);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("rowCountInRange is "+rowCountInRange);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("estimatedRowCount is "+estimatedRowCount);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("rangeSize is "+rangeSize);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("fetchSize is "+fetchSize);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("employerCount is "+employerCount);<br />&nbsp;&nbsp;&nbsp;&nbsp; logInfo("allRowLength is "+allRowLength);<br />&nbsp;&nbsp;&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; "><strong style="font-weight: bold; ">测试结果：</strong></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;fetchedRowCount is 0</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;rowCount is 1001</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;rowCountInRange is 1</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;estimatedRowCount is 1001</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;rangeSize is 1</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;fetchSize is 1</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;employerCount is 0</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;allRowLength is 1</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; "><strong style="font-weight: bold; ">问题：</strong></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp; &nbsp;实际数据库的记录数是：5 9924，distinct掉重复的person_id后，记录数是3 1113。</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;&nbsp; 在页面上会报出如下警告：<span><span>警告</span>&nbsp;- 查询已超出 1000 行。可能存在更多的行，请限制查询。</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;&nbsp; 不知道是否与此设置有关。</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">&nbsp;</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 5.25pt; ">关于next()方法：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><strong style="font-weight: bold; "><span style="font-size: 12pt; ">&nbsp; <a style="color: #108ac6; text-decoration: underline; ">next</a></span></strong></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span style="font-size: 12pt; ">()</span></code>&nbsp;：<span style="font-family: Calibri; ">ROW<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets the next row in the iterator.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 21pt; ">在迭代器中获得下一行</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">This method delegates to the default RowSetIterator. If this method is called on a row set that has not yet been executed,&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>executeQuery()</span></code>&nbsp;is implicitly called.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">这个方法委托给默认的RowSetIterator。如果这个方法在行集还没有被执行的时候被调用，将隐式调用<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>executeQuery</span></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">。</code></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">If the current row designation is to change,&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>ViewRowImpl.validate()</span></code>&nbsp;is called to validate the current row.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">如果当前行的指定被改变，<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>ViewRowImpl.validate()</span></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">被调用验证当前行。</code></span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">The row set has a "slot" before the first row, and one after the last row. When the row set is executed the iterator is positioned at the slot before the first row. If&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>next()</span></code>&nbsp;is invoked on a newly-executed row, the first row will be returned. If&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">next()</code>&nbsp;is called when the iterator is positioned on the last row of the row set,&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">null</code>is returned and the iterator is positioned at the slot following the last row.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">行集在第一行之前，和最后一行之后都有一个&#8220;空位&#8221;。当行集被执行时，迭代器定位在第一行之前的空位。如果next()在一个新执行的行上被调用，第一行将返回。</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">If the iterator is at the last row of the range when&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>next()</span></code>&nbsp;is called,&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">RowSetListener.rangeScrolled()</code>is called to send&nbsp;</span><a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>ScrollEvent</span></code></a>&nbsp;to registered&nbsp;<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>RowSetListener</span></code>s.</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">当next()被调用时，如果迭代器在范围的最后一行，<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>RowSetListener.rangeScrolled()</span></code><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">被调用发送</code><a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>ScrollEvent</span></code></a></span><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; ">到注册的<span>RowSetListener</span></code>s。</p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">When successful, this method fires a&nbsp;<a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>NavigationEvent</span></code></a>&nbsp;to registered&nbsp;<a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>RowSetListener</span></code></a>s, by calling<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>RowSetListener.navigated()</span></code>. The row returned is designated as the current row.</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 36pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 10.5pt; ">当成功的时候，该方法通过调用<code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>RowSetListener.navigated()</span></code>触发<a style="color: #108ac6; text-decoration: underline; "><code style="font-family: 'Courier New', Courier, monospace; font-size: 1em; white-space: pre; "><span>NavigationEvent</span></code></a>&nbsp;</span>。返回的行被标志为当前行。</p></span></div></h3></span></div><img src ="http://www.blogjava.net/sslaowan/aggbug/355581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sslaowan/" target="_blank">零雨其蒙</a> 2011-08-02 13:31 <a href="http://www.blogjava.net/sslaowan/articles/355581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MessageLovInput级联MessageChoice</title><link>http://www.blogjava.net/sslaowan/articles/355579.html</link><dc:creator>零雨其蒙</dc:creator><author>零雨其蒙</author><pubDate>Tue, 02 Aug 2011 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/sslaowan/articles/355579.html</guid><wfw:comment>http://www.blogjava.net/sslaowan/comments/355579.html</wfw:comment><comments>http://www.blogjava.net/sslaowan/articles/355579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sslaowan/comments/commentRss/355579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sslaowan/services/trackbacks/355579.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 案例：通过Lov选择组织，然后自动筛选职位的记录，职位用Choice控制选择。而且还要实现回填（当修改记录时）&nbsp;&nbsp;&nbsp; &nbsp; 基本原理：当Lov回填事件触发时（isLovEvent=true），读取Lov的返回值列表，找出关联两个VO的键值，作为Choice对应的VO的查询条件，构建动态SQL，刷新VO&nbsp;&nbsp;&nbsp; &nbsp; 基本步骤...&nbsp;&nbsp;<a href='http://www.blogjava.net/sslaowan/articles/355579.html'>阅读全文</a><img src ="http://www.blogjava.net/sslaowan/aggbug/355579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sslaowan/" target="_blank">零雨其蒙</a> 2011-08-02 13:30 <a href="http://www.blogjava.net/sslaowan/articles/355579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>