﻿<?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-&lt;b&gt;&lt;font size='4'&gt;萧秋水的博客&lt;/font&gt;&lt;/b&gt;-随笔分类-ADF</title><link>http://www.blogjava.net/Benjamin/category/49626.html</link><description>&lt;br&gt;&lt;font size='2.5'&gt;带着淡淡的倦意，轻轻的忧惺，宛若远山含笑迷蒙，但又如闪电惊雷般震人心魄……&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 16 Sep 2011 05:55:20 GMT</lastBuildDate><pubDate>Fri, 16 Sep 2011 05:55:20 GMT</pubDate><ttl>60</ttl><item><title>如何使用af:selectManyChoice组件 - 转载</title><link>http://www.blogjava.net/Benjamin/archive/2011/09/16/358789.html</link><dc:creator>萧秋水</dc:creator><author>萧秋水</author><pubDate>Fri, 16 Sep 2011 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/Benjamin/archive/2011/09/16/358789.html</guid><wfw:comment>http://www.blogjava.net/Benjamin/comments/358789.html</wfw:comment><comments>http://www.blogjava.net/Benjamin/archive/2011/09/16/358789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Benjamin/comments/commentRss/358789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Benjamin/services/trackbacks/358789.html</trackback:ping><description><![CDATA[<div><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">af:selectManyChoice 是一个下拉多选框，如下图：</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;<img alt="" height="158" src="http://www.ofmclub.com/sites/default/files/lov.png" title="" width="99" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />&nbsp; 这个组件使用起来不是那么容易，它需要将表单中的一个column的attribute 和 组件中的selectitems之间互相转换。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">正好今天有个客户问起，兴致所致就写了简单的例子，<a href="http://115.com/file/aq1zp7jc" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">下载</a>。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">我不详细展开讲了，简要描述下：</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">1） af:selectManyChoice 的value attribute 绑定到一个managed bean的get和set 方法上</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">2） af:selectManyChoice的autosumit=true, immediate=true</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">3)&nbsp;&nbsp; 可选择值为一个Static List的View Object， 在页面的binding中配置该lov，并且在selectItems的value属性绑定到该lov。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">4）在af:selectManyChoice 的value对应的manage bean的get/set方法中，将页面选择的index对应到lov的具体值并存放到数据库，读取则反之。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">下载包的密码是:&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#103;&#101;&#110;&#101;&#46;&#120;&#117;&#106;&#105;&#110;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">gene.xujin@gmail.com</a>&nbsp;</p></div><img src ="http://www.blogjava.net/Benjamin/aggbug/358789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Benjamin/" target="_blank">萧秋水</a> 2011-09-16 13:48 <a href="http://www.blogjava.net/Benjamin/archive/2011/09/16/358789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>row.attributeName vs. row.bindings.attributeName - 转载</title><link>http://www.blogjava.net/Benjamin/archive/2011/09/16/358788.html</link><dc:creator>萧秋水</dc:creator><author>萧秋水</author><pubDate>Fri, 16 Sep 2011 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/Benjamin/archive/2011/09/16/358788.html</guid><wfw:comment>http://www.blogjava.net/Benjamin/comments/358788.html</wfw:comment><comments>http://www.blogjava.net/Benjamin/archive/2011/09/16/358788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Benjamin/comments/commentRss/358788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Benjamin/services/trackbacks/358788.html</trackback:ping><description><![CDATA[<div><span style="color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">在ADF页面上有两种EL的引用af:tree,af:treeTable,af:table的数据集合的方式。一种是#{row.attributeName}，另一种是#{row.bindings.attributeName.inputValue}。 这两者的区别是：前者是只读的 而后者是可读写的。前者这是将该属性以字符串的形式返回，该EL的返回值是一个String类型，后者则不同，#{row.bindings.attributeName}是一个Attribute Binding, 在运行时是一个FacesCtrlAttrsBinding 类的实例，该类是框架内部使用的类，继承了JUCtrlAttrsBinding。所以只要表格需要更新，就应该使用{row.bindings.attributeName.inputValue}，另外一个例子是#{node.attributeName}，node表示了树组件中的一个节点，可以对应到table组件的row。</span></div><img src ="http://www.blogjava.net/Benjamin/aggbug/358788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Benjamin/" target="_blank">萧秋水</a> 2011-09-16 13:46 <a href="http://www.blogjava.net/Benjamin/archive/2011/09/16/358788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ADF Faces中如何跳过验证 - 转载</title><link>http://www.blogjava.net/Benjamin/archive/2011/09/16/358787.html</link><dc:creator>萧秋水</dc:creator><author>萧秋水</author><pubDate>Fri, 16 Sep 2011 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/Benjamin/archive/2011/09/16/358787.html</guid><wfw:comment>http://www.blogjava.net/Benjamin/comments/358787.html</wfw:comment><comments>http://www.blogjava.net/Benjamin/archive/2011/09/16/358787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Benjamin/comments/commentRss/358787.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Benjamin/services/trackbacks/358787.html</trackback:ping><description><![CDATA[<div><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">ADF具有一个非常健壮的验证框架。表单验证可以在各个层次上进行（view, model和business service）。如果需要详细研究验证机制，请参考<a href="http://download.oracle.com/docs/cd/E16162_01/web.1112/e16182/bcvalidation.htm#sm0231" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Fusion Developer's Guide for Oracle Application Development Framework.</a></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">在现实的开发过程中，经常有一些页面需要暂时的跳过默认的验证，本文旨在讨论下常见的use case:</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><span style="font-size: 16px; "><strong style="font-weight: 700; ">1. Keep immediate=true</strong></span></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;一个最常用的方式就是将UICOMPONENT的immediate属性设置为true，这样可以将对组件的处理提前到<strong style="font-weight: 700; ">Apply Request Values阶段。关于immediate属性可以参考&nbsp;<a href="https://cwiki.apache.org/confluence/display/MYFACES/How+the+immediate+attribute+works" 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; text-decoration: none; color: #3c7c41; ">wiki</a></strong></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">典型用例：</strong>cancel button，在取消按钮点击时，页面是不需要验证提交的表单的。可以将按钮组建的immediate属性设为'true'来实现这个功能。 如果是一个reset按钮，那么除了immediate属性需要设为'true&#8216;外，最好还要调用下相关其他input组件的<a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/component/UIInput.html#resetValue()" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">resetValue()</a>方法，来恢复初始状态。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><span style="font-size: 16px; "><strong style="font-weight: 700; ">2. SkipValidation</strong></span></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">另外一种方式，是设置pagedefinition 文件的SkipValidation 属性。该属性可以控制跳过model层的验证。需要注意的是，这个属性只对entity level的validation rule起作用，对于entity object的attribute上定义的validation rule是没有作用的。另外对于浏览器端的验证(javascript），这个属性也是没法控制的。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">这个属性可以在每个页面对应的Page Definition 文件中找到，如下图：</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;<img alt="" height="380" src="http://www.ofmclub.com/sites/default/files/skip1.png" title="" width="640" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;这个属性可能有的值，见下图：</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><img alt="" height="409" src="http://www.ofmclub.com/sites/default/files/skip2.png" title="" width="411" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">a. SkipValidation=true</strong></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">设为true则在form提交过程中会跳过Model层的验证，直到commit的时候才会进行验证。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">典型场景：</strong>如需要在一张表中输入很多行信息，用户可能希望可以在页面中以任何顺序输入信息，不希望每次table selection事件都会触发验证。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">b. SkipValidation=custom</strong></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">设为custom的时候，需要开发人员实现一个oracle.binding.BindingContainerValidator的接口的类，并用EL配置，如图：</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;<img alt="" height="405" src="http://www.ofmclub.com/sites/default/files/skip3.png" title="" width="411" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">&nbsp;这个选择项给了开发人员更多的空间来应对复杂的业务需求，开发人员可以自定义如何对表单进行验证。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">c. SkipValidation =&nbsp;<strong style="font-weight: 700; ">skipDataControls</strong></strong></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; ">skipDataControls 选择项的意思是会跳过data control这个level的验证，或者说是事务级别的验证。它只会对当前的binding container中的iterator的current row进行验证，而不会对其他不相关的提交的数据进行验证。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">典型场景:&nbsp;</strong>在一个页面上使用了多个data control，提交一个data control不会验证同一个页面中的其他data control中的数据。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">d. SkipValidation=false</strong></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><strong style="font-weight: 700; ">默认值，不会跳过验证。</strong></p></div><img src ="http://www.blogjava.net/Benjamin/aggbug/358787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Benjamin/" target="_blank">萧秋水</a> 2011-09-16 13:42 <a href="http://www.blogjava.net/Benjamin/archive/2011/09/16/358787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何开始学习ADF和Jdeveroper 11g - 转载</title><link>http://www.blogjava.net/Benjamin/archive/2011/09/16/358779.html</link><dc:creator>萧秋水</dc:creator><author>萧秋水</author><pubDate>Fri, 16 Sep 2011 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/Benjamin/archive/2011/09/16/358779.html</guid><wfw:comment>http://www.blogjava.net/Benjamin/comments/358779.html</wfw:comment><comments>http://www.blogjava.net/Benjamin/archive/2011/09/16/358779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Benjamin/comments/commentRss/358779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Benjamin/services/trackbacks/358779.html</trackback:ping><description><![CDATA[<div><header style="margin-left: 10px; margin-right: 10px; color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><h1><br /></h1></header><div region-content"="" style="color: #555555; font-family: 'Helvetica Nueue', 'Trebuchet MS', Arial, 'Nimbus Sans L', FreeSans, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "><div id="block-system-main" block-system="" block-odd="" block-count-3=""  block-region-content"="" role="main" style="position: relative; clear: both; margin-bottom: 15px; margin-top: 0px; margin-right: 0px; margin-left: 0px; "><div clearfix"="" style="margin-left: 10px; margin-right: 10px; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; border-top-left-radius: 4px 4px; border-top-right-radius: 4px 4px; border-bottom-right-radius: 4px 4px; border-bottom-left-radius: 4px 4px; background-position: initial initial; background-repeat: initial initial; "><div><article id="article-15" article-type-blog="" article-promoted="" odd="" article-full=""  clearfix"="" about="/content/%E5%A6%82%E4%BD%95%E5%BC%80%E5%A7%8B%E5%AD%A6%E4%B9%A0adf%E5%92%8Cjdeveroper-11g" typeof="sioc:Post sioct:BlogPost" role="article" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "><footer style="font-size: 0.9em; margin-top: 3px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span property="dc:date dc:created" content="2011-09-04T08:36:02+08:00" datatype="xsd:dateTime" rel="sioc:has_creator">由&nbsp;<span xml:lang="" about="/users/gene" typeof="sioc:UserAccount" property="foaf:name">gene</span>&nbsp;</span></footer><div style="line-height: 1.5em; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><div field-name-body="" field-type-text-with-summary=""  field-label-hidden"=""><div even"="" property="content:encoded"><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">作为第一篇博客，先给一些资料可以帮助初学者开始学习ADF和Jdeveloper11g</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">1.首先毫无疑问，你要懂java语言， 可以看看<a href="http://www.mindview.net/Books/TIJ/" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Thinking In Java</a>， 或者原来sun的网上的一些文档<a href="http://java.sun.com/docs/books/tutorial/getStarted/index.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">&nbsp;Sun&#8216;s Online Docs</a>.</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">2. 在学习语言的过程中，可以使用jdeveloper作为开发的工具，可以熟悉一下编码/Debug/Syntax的环境。jdev也提供了丰富的代码模板，自动补全以及重构的功能。具体可以参考<a href="http://st-curriculum.oracle.com/obe/jdev/obe11jdev/ps1/introjdevide/introjdevide.htm" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">IDE教程</a>。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">3.接下去，可以开始ADF的学习。可以先看一下&nbsp;<a href="http://www.oracle.com/technetwork/developer-tools/jdev/overview/jdeveloper-reviewrguide-086026.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Getting Started Guides</a>。看一下该框架的白皮书，知道这个框架可以做些什么，也可以在那里找到一些demo。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">4.然后做一个step by step的教程，<a href="http://download.oracle.com/docs/cd/E18941_01/tutorials/jdtut_11r2_55/jdtut_11r2_55_1.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">文档链接</a>。通过这个教程你可以了解ADF学习的过程，有个初次的印象。如果仔细阅读每一步的说明，在做这个练习的同时也会了解很多的开发细节。 除此之外，还有两个深入学习的教程，<a href="http://st-curriculum.oracle.com/obe/jdev/obe11jdev/ps1/adf_richclient/adfrichclient.htm" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">ADF Focused Tutorial</a>&nbsp;，&nbsp;<a href="http://st-curriculum.oracle.com/obe/jdev/obe11jdev/ps1/boundedtaskflow/bounded_task_flow.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">ADF Task Flow</a>。</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">还有很多其他的教程可以在这里找到：<a href="http://download.oracle.com/docs/cd/E18941_01/tutorials/toc.htm" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">链接</a>&nbsp;&nbsp;<a href="http://www.oracle.com/technetwork/developer-tools/jdev/overview/index-100269.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">OTN</a></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">相关的书籍，培训：&nbsp;<a href="http://www.oracle.com/technetwork/developer-tools/jdev/training11g-090355.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">链接</a></p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">5. 接下去会有一些痛苦，如果你已经完成了所有的培训，不管你是自学还是参加ORACLE的课程。请阅读一下完成的<a href="http://download.oracle.com/docs/cd/E16162_01/index.htm" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">开发手册</a>。 开发手册会给你更加深入的ADF相关的知识。有基本oracle 官方的书可以参考以下：<span style="border-collapse: separate; font: normal normal normal 12px/normal arial, helvetica, sans-serif; color: #000000; "><a href="http://www.mhprofessional.com/product.php?isbn=0071744282" target="_blank" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Quick Start Guide to Oracle Fusion Development</a>&nbsp;</span>，<a href="http://www.mhprofessional.com/product.php?isbn=0071602380&amp;%E2%81%9Ecat=112" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Oracle JDeveloper 11g Handbook</a>，<a href="http://www.mhprofessional.com/product.php?cat=112&amp;isbn=0071622543" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Oracle Fusion Developer Guide</a>。当然这些书都是收费的，在国内网上可能能找到免费的 :)</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">6. 如果走到了第六步，说明你已经有了比较完整的基础。但是，当你真正开始用ADF和JDEV做开发时，你会有很多问题，这些问题是以上一些教程和书籍没有告诉你怎么解决的。这个时候你就需要<a href="http://forums.oracle.com/forums/forum.jspa?forumID=83" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">JDeveloper and ADF discussion forum</a>。 或者到我们的 OFMCLUB来寻求答案。 当然在google上也能搜到很多ADF有用的信息，比如一些BLOG&nbsp;<a href="http://www.connotea.org/user/jdeveloper" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">searchable ADF/JDeveloper blog repository</a>.</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><a href="http://www.oracle.com/technetwork/developer-tools/adf/learnmore/index-101235.html" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">ADF Code Corner</a>提供了很多的问题解决方案。<br />&nbsp;</p><p style="margin-top: 0.4em; margin-bottom: 0.8em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">7. 在goolge上有一些专家，建立个讨论组&nbsp;<a href="http://groups.google.com/group/adf-methodology" 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; text-decoration: none; font-weight: bold; color: #3c7c41; ">Oracle ADF Enterprise Methodology Group</a>。 主要讨论一些高级的议题，和最佳实践</p></div></div></div></article></div></div></div></div></div><img src ="http://www.blogjava.net/Benjamin/aggbug/358779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Benjamin/" target="_blank">萧秋水</a> 2011-09-16 11:58 <a href="http://www.blogjava.net/Benjamin/archive/2011/09/16/358779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在af|inputDate 组件上防止键盘输入 - 转载</title><link>http://www.blogjava.net/Benjamin/archive/2011/09/16/358778.html</link><dc:creator>萧秋水</dc:creator><author>萧秋水</author><pubDate>Fri, 16 Sep 2011 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/Benjamin/archive/2011/09/16/358778.html</guid><wfw:comment>http://www.blogjava.net/Benjamin/comments/358778.html</wfw:comment><comments>http://www.blogjava.net/Benjamin/archive/2011/09/16/358778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Benjamin/comments/commentRss/358778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Benjamin/services/trackbacks/358778.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在af|inputDate 组件上防止键盘输入&nbsp;gene&nbsp;有些情况下，我们会需要日期输入控件不允许用户用键盘输入日期。要实现这样的功能就需要使用到Javascript。功能的效果如下图：&nbsp;Javascript：?12&lt;af:resource&gt; function disableEntry(evt){ evt.cancel(); }&lt;/af:resour...&nbsp;&nbsp;<a href='http://www.blogjava.net/Benjamin/archive/2011/09/16/358778.html'>阅读全文</a><img src ="http://www.blogjava.net/Benjamin/aggbug/358778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Benjamin/" target="_blank">萧秋水</a> 2011-09-16 11:55 <a href="http://www.blogjava.net/Benjamin/archive/2011/09/16/358778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>