`
lthu
  • 浏览: 59084 次
  • 性别: 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应用开发的多个层面,包括但不限于路由分发、数据访问、事务管理、安全控制等。 **开源标签解析** "开源...

    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实践** - **...

    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.其...

    ROSE mirror HA 双机热备软件

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

    paoding-rose-1.0.1.jar

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

    RationalRose2003下载(破解)

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

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

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

    开源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 下载及破解方法 内含下载地址和破解方法

    rational rose 汉化补丁

    4. 确保补丁正确覆盖到Rational Rose的安装目录。 5. 重启Rational Rose,检查是否成功汉化。 需要注意的是,安装汉化补丁可能存在兼容性问题,比如与特定版本的Rational Rose不匹配,或者可能导致软件不稳定。因此...

    Rational Rose 2007下载地址及激活方式

    Rational Rose 2007下载地址 Rational Rose 2007下载地址 IBM.Rational.Rose.Enterprise.v7.0 下载后是个bin文件,用DAEMON Tools Lite或其他类似软件打开次bin文件即可。

Global site tag (gtag.js) - Google Analytics