跳至内容 Java Solaris 社区 Sun 商店 加入 SDN 我的个人档案 加入的益处
 
Java Studio Creator 2 中的条件验证
 
作者:Matthew Bohm,2006 年 2 月  
只有用户单击特定的按钮或链接时,某些 Web 页才需要执行特定的验证检查。这称为条件验证。本技术提示说明了如何在购物车方案中执行条件验证,并附带提供了 Shipping Method 样例项目
 
目录
 
Shipping Method 样例项目
有条件地要求进行选择
条件验证和选择性处理
更多的开发者资源
 
 
Shipping Method 样例项目
 
该样例项目用于模拟结帐过程的三个页面。进行条件验证的页面是 ShippingMethod。在结帐过程中,位于 ShippingMethod 前面的页面是 PreviousPage。位于 ShippingMethod 后面的页面是 NextPage。
图 1:在浏览器中显示的 PreviousPage
    图 1:在浏览器中显示的 PreviousPage
图 2:在浏览器中显示的 ShippingMethod
    图 2:在浏览器中显示的 ShippingMethod
图 3:在浏览器中显示的 NextPage
    图 3:在浏览器中显示的 NextPage
 
有条件地要求进行选择
 
在 ShippingMethod 页中,下拉列表组件的 selected 属性被绑定到会话 Bean 属性。如果用户在下拉列表中作出选择,并单击 "Previous Page" 或 "Next Page" 按钮时,我们要将选择的内容存储在该会话 Bean 属性中。但是,我们现在只想用户在下拉列表中作出选择,条件是用户单击 "Next Page" 按钮;如果用户单击 "Previous Page" 按钮,则用户可以作出(也可以不作出)选择。

为了实现上述目标,我们首先要确保将下拉列表的 required 属性设置为 False。然后,我们在 ShippingMethod 页中实现 preprocess 方法,如下所示:

    public void preprocess() {
        FacesContext context = FacesContext.getCurrentInstance();
        Map map = context.getExternalContext().getRequestParameterMap();
        if (map.containsKey(nextButton.getClientId(context))) {
            shippingMethodDropDown.setRequired(true);
        }
        else {
            shippingMethodDropDown.setRequired(false);
        }
    }

preprocess 方法将在任何处理方法发生之前先执行,因此我们可以动态地设置下拉列表的 required 属性。我们在请求参数中查找 "Next Page" 按钮的客户端 ID。如果找到 "Next Page" 按钮的客户端 ID,则可知道用户单击了 "Next Page" 按钮,然后将下拉列表的 required 属性设置为 True;否则将 required 属性设置为 False,以确保它没有在上一个请求中保留 True。
 
条件验证和选择性处理
 
请注意,样例项目不使用虚拟表单。这是因为样例项目需要条件验证,而虚拟表单解决的是另一个问题,即选择性处理。通过虚拟表单,您可以控制哪些输入组件需要处理,即被转换、验证以及映射到绑定目标上。将对任何需要处理的输入组件无条件地执行所有配置的验证检查。了解有关虚拟表单的详细信息。相比之下,通过本技术提示介绍的方法,您可以控制哪些验证检查需要执行。此处论述的样例项目根本不需要进行选择性处理;无论用户单击 ShippingMethod 页面上的哪个按钮,我们都需要下拉列表组件得到处理,尤其是这可将下拉列表中选择的内容映射到它在会话 Bean 中的绑定目标上。

 
更多的开发者资源
 

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


Matthew Bohm 是一位在旧金山工作的 Java/J2EE 开发者。自成为 Sun Java Studio Creator 团队的一名开发人员后,他有幸与一帮赛车手、影迷、流行歌手、极具幽默感的斯洛伐克程序员以及 Tor Norbye 在一起工作。Matt 在工作之余,会喝点绿茶或者创作古典音乐。他的出生地不在拉斯维加斯。