JSF实例:组件显示(隐藏)与数据排序

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

JSF中处理组件的显示和隐藏、数据的排序等相对其它框架非常轻易和直接了当, 常被教科书作为实例分析和讲解。下面这个实例来自名为《 Mastering javaServer Faces中文版》的书(略有改动),通过组件的显示(或隐藏)及数据的排序来讲解JSF中UI组件的用法。

先看看它的界面共三个(1)index.jsp,

(2)ModifyInvoice.jsp,这个修改发票界面有一个显示(隐藏)按钮,点击时可显示(或隐藏)部分组件。

(3)ViewInvoices.jsp,显示全部发票的列表。并可以按发票序号和数额排序。

主要看看这个页面中,当点击发票的发票序号时如何正确返回到ModifyInvoice.jsp页面(在我们自己的实践当中一定要碰到的问题啊,通常的做法是超链接当中带参数)。当然首先要在faces-config.xml文件中定义导航法则:

/ViewInvoices.jsp

modifyInvoice

/ModifyInvoice.jsp

从源码可以知道这个页面通过一个 标记来显示所有发票。

...

value="#{invoice.invoiceNumber}" action="#{viewInvoicesPage.modifyInvoice}">

.....

从上看出,当我们点击发票的序号时,JSF调用viewInvoicesPage.modifyInvoice方法。

public String modifyInvoice() {

FacesContext facesContext = FacesContext.getCurrentInstance();

UIViewRoot root = facesContext.getViewRoot();

UIData table = (UIData) root.findComponent("invoiceForm").findComponent("table");

InvoiceBean invoice = (InvoiceBean) table.getRowData();

ValueBinding binding =

facesContext.getapplication().createValueBinding("#{modifyInvoicePage}");

ModifyInvoicePage detailPage = (ModifyInvoicePage) binding.getValue(facesContext);

detailPage.setInvoice(invoice);

return "modifyInvoice";

}

如此看来,当用 标记显示数据时,聪明的JSF用getRowData()可以知道你点击了那一行(即那一个发票号,这实际上是JSF将标记转为Html链接时自动加上了行索引),再将这一行数据传给 ModifyInvoice.jsp页。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航