跳至内容 Java Solaris 社区 Sun 商店 加入 SDN 我的个人档案 加入的益处
 
在 Sun Java Studio Creator 2 IDE 中使用新的 AJAX 立即购买样例组件
 
作者:Jayashri Visvanathan、Beth Stearns 和 Steve Fleming,2006 年 4 月  
立即购买按钮组件是 Sun Java Studio Creator 2(和 Update 1)IDE 中提供的一个新样例组件。使用样例组件,您可以了解在 Java Studio Creator IDE 中会执行哪些操作。这些组件会随着时间的推移而发生改变,特别是我们对您的建设性的反馈意见作出回应时而出现变化。
 
目录
 
用于运行播客的说明
立即购买按钮组件背景
在 IDE 中使用立即购买组件
限制
小结
 

立即购买按钮包含在 BluePrints 样例 AJAX 组件的第二个发行版本中,可以在 IDE 中通过自动更新来获取该发行版本。当用户单击立即购买按钮时,将向 PayPal Web 站点发送付款请求。

我们创建了一个播客,将演示如何在 Sun Java Studio Creator 2 IDE 中使用立即购买按钮组件。除了演示和说明外,该播客还包含了一些指向其他信息的链接,如用于下载该组件的说明,这会对您有所帮助。

用于运行播客的说明
 

以下说明可以帮助您在 Windows XP 平台上安装并运行播客文件。对于其他平台,这些步骤将有所不同。

首先,下载播客文件:ComponentsCast1.m4a。此外,请务必在系统上安装最新版本的 iTunes。目前的最新版本是 iTunes 6.0.4。

安装 iTunes 并打开该应用程序后,您需要将播客文件添加到 iTunes 库中。由于您要收听声轨并观看随附的幻灯片,因此,您需要显示 iTunes 视频查看器。如果显示 iTunes 视频查看器(它应该显示在 iTunes 屏幕左下方的区域中),则需要打开查看器并调整其大小。

要打开视频查看器,请单击 iTunes 窗口左下角的四个按钮中的最右侧按钮(请参见图 1)。

 
图 1:隐藏了视频查看器的 iTunes
图 1:隐藏了视频查看器的 iTunes
 

将在左下角打开视频查看器,并在其中显示 Java Studio Creator 图标。请参见图 2。

 
图 2:显示了视频查看器的 iTunes
图 2:显示了视频查看器的 iTunes
 

可以使用以下方法来调整查看器的大小:单击右上角(直到出现双十字交叉阴影线标记时为止),然后将查看器边框拖动到所需的位置。请参见图 3。

 
图 3:调整后的视频查看器
图 3:调整后的视频查看器
 

现在,您可以收听并观看播客了。只需双击库中的播客条目即可。请确保您能够听清音量指示器中的音量。

 
立即购买按钮组件背景
 

如果您对网上拍卖站点比较熟悉,您往往会对感兴趣的商品进行竞价,并希望您的价格最终成为最高的竞价,从而能够购买到该商品。通常,如果您愿意按要价购买该商品,则可以立即进行购买,而无需通过竞价过程。通过使用立即购买按钮,您可以在 Web 站点上购买或出售各种商品,当 Web 站点提供了您可以购买的商品时,该按钮是非常有用的。

立即购买按钮组件将网上购物详细信息封装到 JavaServer Faces 组件中,从而使您能够通过在 IDE 中创建和设置属性来指定购买详细信息和选项。立即购买按钮是对标准 JavaServer Faces HtmlCommandButton 组件的扩展。它会基于您输入的要出售的商品相关信息(如商品名称及其价格)来呈现标记。

通过使用 JavaServer Faces 组件属性(已在立即购买按钮组件中设置),您可以动态地填充组件属性。在 IDE 中,您可以快捷地将各种组件属性(使用 IDE 的属性绑定对话框)绑定到支持 Bean 中的属性或数据库中的字段,从而有效地设置了所需的值绑定表达式。当您通过网站出售数以百计的商品时,节省了多少时间和精力真是一目了然地呈现出来了。

 
在 IDE 中使用立即购买组件
 

在 Java Studio Creator IDE 中,可以在组件面板上的 "BluePrints AJAX Components" 类别中找到该组件。该组件称为 "Buy Now Button"(立即购买按钮)。通过播客可以向您说明并演示如何在 IDE 中使用该组件。本部分提供了一些更详细的信息。

将此组件放到设计器的页面上时,IDE 将创建一个立即购买组件,并且还会创建 BuyNowPostData Bean。然后,它将 BuyNowPostData Bean 绑定到立即购买组件的 postData 属性上。BuyNowPostData Bean 支持您要选择发送到 PayPal 的所有属性,以完成此按钮启动的交易。另一方面,立即购买组件的属性支持在完成付款后发送到 PayPal 的所有基本信息。如果要发送立即购买组件所支持的内容以外的其他信息,您可以使用该组件的 postData 属性。

可通过页面 Bean 上的 buyNow1_postData 属性来访问此 BuyNowPostData Bean。另外,还可以在此 Bean 上设置属性,方法是:在属性编辑器中直接键入值;或绑定到数据提供器或者 SessionBean 或 ApplicationBean 中的某个其他属性。您可以在该 Bean 上使用存取方法动态地设置或获取此 Bean 上的属性。

可通过设置组件的 image 属性来更改按钮上的图像(有关立即购买按钮的所有 JavaServer 标记属性的列表,请参见表 1)。缺省情况下,按钮图像是从 PayPal 站点装入的,但是您也可以将 image 属性配置为从本地服务器装入图像。这样以来此组件就可以在设计时呈现图像了,但是如果您要在浏览器中预览该按钮图像,则无法单击该按钮。

JavaServer Pages 标记属性和 Bean 属性

表 1 显示了可以在 BuyNowComponent 上设置的 JavaServer Pages (JSP) 标记属性。这些属性是对标准 JavaServer Faces UICommand 按钮支持的属性的补充。当用户单击立即购买按钮时,指定的属性将会发送到 PayPal。有关其他信息,请参见 PayPal 的开发者站点:https://www.paypal.com/cgi-bin/webscr?cmd=p/pdn/intro-outside

 

表 1:JavaServer Pages 标记属性

标记 用途
business 接收付款的 PayPal 帐户的电子邮件地址
amount 商品价格或指定的捐赠物品价格
itemName 商品名称
quantity 商品数量
imageUrl 作为徽标显示的 150x50 像素图像的 URL
postBackUrl 用于发送交易相关信息的 URL
paymentCancelledUrl 取消付款时客户浏览器返回到的 URL
returnUrl 完成付款后客户浏览器返回到的 URL
image 立即购买按钮的图像
alt 无法正常呈现元素时作为显示内容的替换文本
postData 对类型为 BuyNowPostData 的 JavaBean 进行估算,它封装了卖方想要发送的其他属性
target 框架名称,在该框架中显示通过此超级链接检索到的资源
type 表示这是立即购买按钮还是捐赠按钮。所支持的模式:“立即购买”或“捐赠”(不区分大小写)。
testMode 如果为 on,则信息会发送到沙盒中。此属性的缺省值为 on。
displayMode 切换“按钮”和“链接”之间的可视表示。有效值是 buttonlink(不区分大小写);缺省值为 button
 

表 2 显示了 BuyNowPostData Bean 的属性。

 

表 2:BuyNowPostData Bean 属性

属性 含义
itemNumber 用来跟踪购买或捐赠的传递变量,在完成付款时该变量将从 PayPal 传回给您。
undefinedQuantity 允许买方指定数量
firstOptionFieldName 第一个选项字段名称。如果省略,则不传回任何变量。
secondOptionFieldName 第二个选项字段名称。如果省略,则不传回任何变量。
continueLabel 为 PayPal 显示的页面上的“继续”按钮设置文本
noteFieldLabel 支票字段上面的标签
paymentPageHeaderImage 在付款页面的左上角设置图像。最大为 750 像素(宽)x 90 像素(高)。
headerBgColor 为付款页面页眉设置背景色
headerBorderColor 为付款页面页眉设置边框颜色
headerPayFlowColor 为付款页面页眉下面部分设置背景颜色
paymentPageBgColor 设置付款页面的背景颜色
promptPaymentNote 提示客户可以使用支票付款方式
promptShippingAddress 提示客户输入送货地址
pageStyle 为此按钮/链接的关联付款页面设置定制付款页面样式
submissionMethod 返回方法 GET 或 POST
currencyCode 定义用于表示货币变量的币种
handlingCost 手续费
invoiceNumber 用于标识此次购买的发票号的传递变量
shipping Cost 商品的运费(如果要追加商品的运费)
additionalItemShipping-Cost 每个额外商品的运费
tax 基于交易的赋税变量

立即购买按钮的可视表示
立即购买组件提供了两种不同的 JavaServer Pages 可视表示。
  1. 按钮是通过其自己的 HTML 表单元素来表示的。此按钮视图是缺省的可视表示。
  2. 通过超级链接来表示按钮(可称为超级链接视图),可以从现有的 HTML 表单元素中使用超级链接。
您可以使用 displayMode 属性在按钮和超级链接可视表示之间进行切换。例如,要从缺省的按钮视图切换到超级链接视图,请将 displayMode 属性添加到 JSP 代码的 buyNow 标记中,并将其值设置为 link。可通过剪切 buyNow 标记并将其粘贴到相应位置,将该组件放在现有表单标记或表中(或某个其他容器标记中)。

以下 JSP 代码说明了如何使用其自己的表单元素来表示立即购买按钮组件:
<bp:buyNow amount="#{SessionBean1.item2Cost}" binding="#{Page1.buyNow3}"
business="#{SessionBean1.business}" id="buyNow3" itemName="rose"
postData="#{Page1.buyNow3_postData}" quantity="1"
    style="left: 624px; top: 96px; position: absolute" testMode="false"
    type="BuyNow"/>
此 JSP 代码片段生成了以下标记:
<form id="buyNow3_form" name="buyNow3_form" method="post"
        action="https://www.paypal.com/cgi-bin/webscr" target="_blank">
<input id="buyNow3_image" name="buyNow3_image" type="image"
        target="_blank" style="left: 624px; top: 96px; position: absolute"         alt="BuyNow"         src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" />
    <input type="hidden" id="buyNow3_cmd" type="hidden" name="cmd"         value="_xclick" />
<input type="hidden" id="buyNow3_business" type="hidden" name="business"         value="bbb@buyer.com" />
<input type="hidden" id="buyNow3_amount" type="hidden" name="amount"         value="30" />
<input type="hidden" id="buyNow3_item_name" type="hidden"         name="item_name" value="rose" />
<input type="hidden" id="buyNow3_quantity" type="hidden"         name="quantity" value="1" />
</form>
生成的标记表示:立即购买按钮组件呈现一个 form 元素,它使用隐藏的表单字段来保存提交到 PayPal 的买方订购信息。由于该组件生成了 form 元素,因此,buyNow 标记不能放在 form 元素中。

如果希望将组件放在页面的现有表单中,请使用超级链接视图。要使用超级链接视图,只需将 displayMode 属性添加到 buyNow 标记中,并将该属性值设置为 link。如果 displayMode 属性不存在或者它的值为 button,则会将立即购买按钮组件呈现为一个按钮。下面是一个 JSP 代码示例,该示例使用了设置为 linkdisplayMode 属性,这样就可以从页面的现有表单中通过链接来完成呈现:
<bp:buyNow binding="#{Page1.buyNow3}" displayMode="link"
     business="jvisvan@yahoo.com" id="buyNow3" itemName="rose"
     postData="#{Page1.buyNow3_postData}"
style="position: absolute; left: 120px; top: 120px" type="BuyNow"/>
此 JSP 代码生成了以下标记:
<a id="form1:buyNow3" name="form1:buyNow3" 
href="https://www.sandbox.paypal.com/cgi-bin/
     webscr?cmd=_xclick&amp;business=jvisvan@yahoo.com&amp;item_name=rose" 
style="position: absolute; left: 120px; top: 120px">
     <img src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif"
     alt="BuyNow" />
</a>
通常,建议您不要使用链接功能来进行呈现。呈现为链接并不是一种很好的方法,原因有以下几点:
  • 浏览器可能会对 URL 地址的最大长度加以限制。例如,Internet Explorer 所允许的 URL 的最大长度为 2083 个字符。尽管您可能永远也不会使用此长度的 URL 地址,但确实需要注意这一限制。
  • 并且可能会降低安全性。只要使用链接,最终就会在浏览器地址栏中显示完整的 URL。了解此情况的用户可能会绕过安全限制并更改订购信息。
 
限制
 

目前,立即购买组件还存在一些限制。这些限制如下所示:

  • 目前,在付款完成后,该组件不会处理 PayPal 发送到卖方的属性。
  • 该组件不支持允许预填充 PayPal 表单或覆盖地址的属性。
  • 在 Java Studio Creator 项目中使用立即购买组件时,IDE 属性编辑器不允许您在属性表单中直接设置以下属性的值:shipping、shipping2、tax、handlingamount。然而,您可以将这些属性绑定到数据提供器或类型为 BigDecimal 的属性上。
 
小结
 

本文介绍了如何获取并运行立即购买组件播客。本文还提供了一些有关组件的背景信息,并且对组件属性和标记进行了详细说明。

 
更多的开发者资源
 

有关为开发者提供的更多技术提示、文章和专家建议,请访问 Sun Developer Network (SDN) 上的 Java Studio Creator 开发者资源,网址为:http://gceclub.sun.com.cn/prodtech/javatools/jscreator/

Beth Stearns 撰写了许多有关 Java 技术的文章和书籍。最近,她与别人合著了一本有关 J2EE BluePrints 的书《Designing Web Services with the J2EE 1.4 Platform》(使用 J2EE 1.4 平台设计 Web 服务)。
 
Steve Fleming 自公开发行第一批版本以来,Steve 一直是 Sun Java Studio Creator 小组的一名成员,他在为质量保证部门效力。
 
Jayashri Visvanathan 自 JavaServer Faces 小组成立开始,她就一直是该小组的一名成员,Jayashri 目前负责管理引用实现和 java.net 项目。她还与 Java Studio Creator 小组和 BluePrints 小组共同开发 Java Server Faces 组件。