`
lthu
  • 浏览: 59230 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rose4J WEB引擎下载试用

    博客分类:
  • java
阅读更多

最新内容请参考www.rose4j.cn

        经过几天的整理修正,现在Rose4J的WEB开发引擎终于可以跟大家见面了,前台页面与后台java程序能完全分开,使用两端的工作都变得简单清晰,入门难度几乎为零,附件中是所需要的jar包,请下载试用。

下面我们来看看Rose4J的模板的使用方法:

 一、WEB模板代码;

HTML 代码

 

 

见附件(这里显示不了html代码,郁闷中)
从上面模板可以看出Rose4J只有两个TAG(tempnode、include)和4个属性(foreach、item,tid,remove),它也是一个标记语言,写法如下 ${变量表达式} 。

          其中4个属性可用于html任何标签(如用于tr ,td等),foreach、item配合使用,表示一个循环,foreach="${dataSet}"   ,此时dataSet是一个集合对象或数组,item="${data}" ,data表示集合对象或数组对象中每一个成员。

java 代码
  1. package juan.framework;           
  2.           
  3. import java.util.ArrayList;           
  4. import java.util.List;           
  5.           
  6. public class ValueObject {           
  7.    private int id=0;           
  8.    private String name="tom";           
  9.               
  10.    private List aList=new ArrayList();           
  11.               
  12.    public List getList() {           
  13.       return aList;           
  14.    }           
  15.           
  16.    public void setList(List list) {           
  17.       aList = list;           
  18.    }           
  19.           
  20.    public int getId() {           
  21.       return id;           
  22.    }           
  23.           
  24.    public void setId(int id) {           
  25.       this.id = id;           
  26.    }           
  27.           
  28.    public String getName() {           
  29.       return name;           
  30.    }           
  31.           
  32.    public void setName(String name) {           
  33.       this.name = name;           
  34.    }           
  35. }           
  36.           
  37.           
  38. package juan.framework;           
  39.           
  40. import java.util.ArrayList;           
  41. import java.util.List;           
  42. import java.util.Vector;           
  43.           
  44. import juan.framework.context.IContext;           
  45. import juan.framework.context.impl.InnerContextImpl;           
  46. import juan.framework.runtime.RuntimeSingleton;           
  47.           
  48. public class Test {           
  49.           
  50.    /**        
  51.     * @param args        
  52.     */          
  53.    public static void main(String[] args) throws Exception{           
  54.       String filename = "/xml/hell.html"//要访问的模板path           
  55.       Vector paths = new Vector();           
  56.       paths.add("E:\\workspace\\Test\\juan");  //模板存放的path,可以有多个           
  57.       RuntimeSingleton.init(paths);           
  58.           
  59.           
  60.       IContext context=new InnerContextImpl();           
  61.       context.put("title""www.mobi99.cn");           
  62.                  
  63.       ValueObject vo1=new ValueObject();           
  64.       vo1.setId(9999);           
  65.       vo1.setName("vovovovovov");           
  66.                  
  67.       context.put("data", vo1);            
  68.                  
  69.                  
  70.       List aList=new ArrayList();            
  71.       ValueObject[] xxSet=new ValueObject[2];           
  72.                  
  73.       ValueObject vo=new ValueObject();           
  74.       vo.setId(100);           
  75.       vo.setName("tony");           
  76.                  
  77.                  
  78.       aList.add(vo);           
  79.       xxSet[0]=vo;           
  80.                  
  81.       vo=new ValueObject();           
  82.       vo.setId(200);           
  83.       vo.setName("tom");           
  84.       aList.add(vo);           
  85.       xxSet[1]=vo;           
  86.                  
  87.       context.put("dataSet", aList);           
  88.       context.put("xxSet", xxSet);           
  89.           
  90.       RuntimeSingleton.getTemplate(filename, "GBK").merge(context,null); //此处null为writer,如果是servlet则是response.getOutputStream(),demo中省掉了           
  91.    }           
  92. }           
  93.   
  94. 感兴趣的朋友可以自己稍加修改变成一个web应用,当然也可以等我的web demo   

  • lib.rar (1.6 MB)
  • 下载次数: 40
分享到:
评论
1 楼 lthu 2007-11-12  
怎么做if的操作呢?

当初在设计view层时,并不想在view层放入太多的逻辑,但对于常规的应用还是有考虑的,roseforj有个remove属性 当它为true时就会保留到页面,为false时则会动态地删除,也就是说在运行时会删除这个节点,而remove可以写死(如:remove=true等),也可以由后台控制(remove=${java表达式}),由此功能实现if操作,这样一来在view层的代码也是最少的,页面也是最干净的


remove用法说明:
假设我们要完成这样一个功能,当变量(int) a>1时我们需要显示<input name="old.id" value="this is old value"/>,当 a<=1时我们需要显示<input name="id" value="this is new value"/>,那么我们就可以这样实现:

1、在java端编写一个功能类

public class XXUtil{
public static boolean isOld(int a){
if(a>1)return true;

return false;
}

public static boolean isNew(int a){
if(a<=1)return true;

return false;
}
}

并将这个类放入context中

然后view层就可以这样描述:
<input name="old.id" value="this is old value" j:remove="${XXUtil.isOld(a)}"/>
<input name="id" value="this is new value" j:remove="${XXUtil.isNew(a)}"/>

这相当于jstl里的
<c:if test="a>1">
<input name="old.id" value="this is old value" j:remove="${XXUtil.isOld(a)}"/>
<c:else>
<input name="id" value="this is new value" j:remove="${XXUtil.isNew(a)}"/>
</c:if>

在运行时其中一个input肯定会被删除掉,这样就完成了if的功能,在这里我只是举例说明,你也可以将这两个(或多个)input合并成一个,需要变化的部分全用变量代替(如下)。这样一来所有的逻辑(包括界面逻辑)全在服务器端实现,界面仍然非常简洁。

<input name="${xxx.name}" value="${xxx.value}" j:remove="${XXUtil.isOld(a)}"/>
此时这一行就代表了多个if else,当然XXUtil这个类的逻辑也要做相应的修改了。

相关推荐

    paoding-rose, paoding-rose 提供最好用的Java Web应用整体性框架。.zip

    "最好用的Java Web应用整体性框架"这一描述表明,paoding-rose旨在为开发者提供一套完整的工具集,覆盖了Web应用开发的多个层面,包括但不限于路由分发、数据访问、事务管理、安全控制等。 **开源标签解析** "开源...

    IBM Rational Rose系列软件下载地址RAR文件

    在描述中提到的"IBM Rational Rose V7.0系列软件下载地址RAR文件",指的是可以找到该软件不同组件或者不同平台版本的压缩包。通常,一个软件系列可能包括多个部分,如主程序、插件、文档、示例等,这些都可能作为...

    rational rose7.0 安装包下载

    rational rose7.0 安装包下载破解版 里面有安装教程,亲测可用

    rose2003及破解的下载地址.

    rose2003 开发 uml 下载地址

    Rational Rose下载使用

    Rational Rose下载使用

    rose框架使用Demo

    4. **Rose-Client:客户端支持** - **Ajax支持**:Rose-Client提供了便捷的Ajax接口,便于实现前后端异步交互。 - **JSON序列化与反序列化**:Rose支持JSON数据格式,方便数据传输和处理。 5. **Demo实践** - **...

    ROSE mirror HA 双机热备软件

    1. **下载安装包**:首先从官方渠道或提供的压缩包中获取ROSE Mirror HA的软件下载包。 2. **系统检查**:确认操作系统版本为Windows 32位或64位,确保满足软件的运行要求。 3. **安装主服务器组件**:在主服务器...

    RoseMirrorHA7.0安装文档

    4. **RoseMirrorHA for Linux 软件卸载** - 使用相应的包管理命令移除软件,并清理配置文件和数据。 ### 三、RoseMirrorHA 配置方案 1. **启动 WEB 管理工具** - 安装完成后,可以通过Web界面进行集群的配置和...

    RoseHA.rar

    《RoseHA技术详解及其在高可用性中的应用》 RoseHA,全称为Rose High Availability,是一款专注于提供企业级高可用性解决方案的...如果你的光盘不慎丢失,可以从提供的RoseHA版本中进行下载,体验其卓越的高可用性能。

    Rational rose下载uml建模专用

    方法一:下载SHW32.DLL文件覆盖Rose 2003中的该原文件即可。 方法二:修改注册表 1.打开注册表 2.定位到"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Java VM" 3.新建项TrustedClasspath [REG_SZ](字符串值) 4.其...

    paoding-rose-1.0.1.jar

    在描述中提到的“包含基本所需要的jar,比较全面”,意味着该jar包集成了许多常用的功能库,如日志处理的log4j,以及文件上传下载的相关支持。 1. **Log4j**: Log4j是Apache的一个开源项目,是一个广泛使用的Java...

    RationalRose2003下载(破解)

    虽然题目中提到了Rational Rose 2003的下载链接,但鉴于版权和法律问题,这里并不推荐使用非官方渠道获取软件。用户应该通过正规途径获取正版授权的Rational Rose 2003,并按照官方提供的指南完成安装和配置过程。 ...

    开源web框架Rose开发初感

    标题“开源web框架Rose开发初感”提示我们讨论的主题是关于一个名为Rose的开源Web框架。这可能是一个用于构建Web应用程序的软件框架,它提供了一系列工具和结构,帮助开发者更高效地编写代码。Web框架通常包括路由...

    RoseMirrorHA_6.0.0_461-x64(1).msi

    实时备份,ROSE MIRROR HA试用版,实时备份,ROSE MIRROR HA试用版,实时备份,ROSE MIRROR HA试用版,

    rational rose2003

    Rational Rose 是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio 和 C++ )需求能力和灵活性的一套解决方案。Rose 允许开发人员,项目经理,系统工程师和分析人员在软件开发周期内在将需求...

    RoseHA_8.9.0_8909-x64

    RoseHA 8.9.0 8909 x64

    RoseMirrorHA_6.0

    4. 灵活的配置选项:RoseMirrorHA支持多种高可用性模式,如主动/被动模式、半主动/半被动模式等,用户可根据实际需求选择最适合的模式。 四、应用场景 1. 企业关键业务:对于金融、医疗、电商等对数据安全性要求极...

    Rational Rose 2003 下载及破解方法

    Rational Rose 2003 下载及破解方法 内含下载地址和破解方法

    RoseMirrorHA_5.0.0_301-SP1-x64.rar

    - **广泛的应用程序支持**:无论是在数据库、Web服务还是其他企业级应用上,RoseMirrorHA都能提供高可用性保护,适应多种Windows应用程序环境。 - **监控与报警**:系统内置监控机制,实时监控服务器状态,一旦...

Global site tag (gtag.js) - Google Analytics