`
pojo
  • 浏览: 24921 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

动态生成Java Bean测试页面

阅读更多

题目见是否有可以编辑java bean对象的通用web组件?

把这个需求当作习题做了一下,准确地说做了一半,从任意咖啡豆动态导出Schema和简单测试网页。就用我在《元数据、开放数据模型及动态系统--形而下学篇》描述的套路。另一半应该更容易。任何XML Parser都支持Validation,一般用XML/Schema的理由之一就是Validation的能力,所以Validation因该不是问题。

我为此写了一个BeanMetadataReader,和一个XSLT,然后就是:

java 代码
  1. EndPoint in = new EndPoint("object:java.beans.Beans");    
  2. in.setProperty("format""metadata");    
  3. EndPoint out = new EndPoint("file:///C:/hyperdigital/dataset/test-output/person.html");    
  4. String[] xslts = {"file:///C:/hyperdigital/dataset/test-output/bean-test.xslt"};    
  5.     
  6. DataPipeLineFactory factory = DataPipeLineFactory.newInstance();    
  7. XMLReader reader = factory.newDataPipeLine(in, out, xslts);    
  8. Person bean = new Person();    
  9. DataSource source = factory.newDataSource(in, bean);    
  10. reader.parse(source);    

如果把写作一次享用终生的代码(BeanMetadataReader)算作框架,那上面的代码加上XSLT就是全部的应用代码。

EndPoint里的object:java.beans.Beans只是一个标识,是URN,不是URL,表示输入是一个咖啡豆。和我在以前文章里写得不太一样,改过了。

测试用的咖啡豆:

 java 代码

 
  1. class Person    
  2. {    
  3.     public Person() {}    
  4.     public Address getAddress() {return null;}    
  5.     public Date getDateOfBirth() {return null;}    
  6.     public String[] getEmailAddresses() {return new String[3];}    
  7.     public String getFirstName() {return null;}    
  8.     public String getLastName()  {return null;}    
  9.     public boolean isMale() {return true;}    
  10.     public int getPinNumber() {return 1111;}    
  11. }    
  12.      
  13. class Address    
  14. {    
  15.     public String getAddressLine1() {return null;}    
  16.     public String getAddressLine2() {return null;}    
  17.     public String getState() {return null;}    
  18.     public String getTownship() {return null;}    
  19.     public String getZipCode()  {return null;}    
  20. }    

附件是用于测试的XSLT,以及产生的Schema和测试网页的HTML。如果想要花哨的网页,只要修改XSLT就行了,甚至只要在XSLT里import一个js文件就可以了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics