2009-09-17 由 罗帆 发表   评论(1条)   有2323人浏览

Apusic OperaMasks V2.3在修复众多bug,最大保持向前兼容性的基础上,为提升用户体验,在很多方面作了改进。本文将就该版本的新特性进行详细的介绍:

1.提供统一的事件处理接口,提供更丰富的事件上下文

V2.3现在提供方式给一个组件添加AjaxAction事件,分别是EL方式,IoVC方式和编程方式。

  • EL方式

    页面代码:

    <w:textField jsvar="field">  
       <ajax:action event="onchange" action="#{bean.action }">
       </ajax:action>
    </w:textField>

    LiteBean代码:

    public void action(FieldChangeEvent event) {
          System.out.println(event.getOldValue());
          System.out.println(event.getNewValue());
    }
  • IoVC方式

    页面代码:

    <w:textField id="field"></w:textField>

    LiteBean代码:

    @Action(event="onchange", id="field")
    private void fieldAction(FieldChangeEvent event) {
          System.out.println(event.getOldValue());
          System.out.println(event.getNewValue());
    }
  • 编程方式

    页面代码:

    <w:textField id="field">
    </w:textField>

    LiteBean代码:

    @Bindprivate UITextField field;
    public void action(FieldChangeEvent event) {
       System.out.println(event.getOldValue());
       System.out.println(event.getNewValue());
    }
    @BeforeRender
    public void beforeRender(boolean isPostback) {
           if(!isPostback) {
                field.getAjaxEventHandler().addElBinding("onchange", "#{bean.action}", false);       }}

v2.3自定义了很多强类型事件比如 RowSelectEvent, FieldChangeEvent,方便用户直接通过事件上下文参数获取参数。

2. 更灵活的客户端校验方案

  • 用户可自定义客户端校验的触发时机

    属性validateBeforeSubmit可用来设置表单提交时是否进行客户端校验,属性validateEvents可用来设置校验触发的事件。如下

    <w:form clientValidate="true" validateEvents="onchange, onfocus" validateBeforeSubmit="false">
        <w:textField required="true">        
          <f:validateLength minimum="3" maximum="6">
          </f:validateLength>
        </w:textField>
    </w:form>
  • ajax:clientValidator增强

    在ajax:clientValidator中除了可返回boolean类型,还可以返回String类型,如果返回String类型,那么该String将作为错误信息展现。

    <w:form>
        <w:textField id="username">
            <ajax:clientValidator>
                 if (value == 'admin')
                    return "admin为系统预留账户,不可注册!";
                 if (value == 'guest')
                    return "guest已被注册,请选用其他账户!";
                 return true;
            </ajax:clientValidator>
        </w:textField>
    </w:form>
  • 使用JavaScript代码触发校验

    为构件声明一个"jsvar"属性,然后可用JavaScript代码使其进行校验,如

    <w:form clientValidate="true" onsubmit="return field.validate()">
        <w:textField jsvar="field" required="true">
            <f:validateLength minimum="3" maximum="6">
            </f:validateLength>
        </textField>
    </w:form> 

3.统一的资源处理机制,方便用户扩展 

  • 资源依赖关系定义及引用

    静态资源包括js,css,flash等的依赖关系在类路径中META-INF/resource/resource-dependences.xml文件中描述。 如有需要用户可以自行定制自己的资源依赖关系。如下

    <resource>
     <packages type="js">
      <package name="Ext.ux.scrolledTabPanel" file="/ext/ux/scrolledTabPanel.js">
       <requires name="Ext.Layout">
       </requires>
      </package>
     </packages>
     <packages type="css">
      <package name="Ext.ux.scrolledTabPanel"   file="/ext/skin/${skin}/yuiext/css/scrolledTabPanel.css">
      </package>
     </packages>
    </resource>

    在组件渲染类中即可引用定义的资源:

    @ExtClass("Ext.ux.TabPanel")
    @DependJSPackages("Ext.ux.scrolledTabPanel")
    @DependCSSPackages("Ext.ux.scrolledTabPanel")
    public class ScrolledTabLayoutRenderHandler extends TabLayoutRenderHandler {...}
  • 皮肤制作及使用

    META-INF/resource/skins.xml文件用于定义组件外观皮肤,如下

    <skins>
     <skin id="black" file="/ext/skin/black/yuiext/css/xtheme-black.css">
         <displayName><![CDATA[Black]]></displayName>  
         <displayName locale="zh_CN"><![CDATA[Black]]></displayName>
         <authorName><![CDATA[Ext JS - JavaScript Library]]></authorName>
         <authorEmail><![CDATA[jack.slocum@yahoo.com]]></authorEmail>
     </skin>    ......</skins>

    然后相对于META-INF/resource放置相关资源,就可以直接使用了。

4.易用的组件热键支持 

添加ajax:keyBinding用于为组件添加热键绑定

<w:textField fieldLabel="TextField">
    <ajax:keyBinding key="A" action="#{testKeyBindingBean.show }" alt="true" />
</w:textField>
<w:form>
    <w:button value="submit" jsvar="btn" />
    <ajax:keyBinding target="document" key="F7" clientScript="btn.fireEvent('click');" />
</w:form>
<ajax:keyBinding target="document" key="F8,N1,1,B,C" action="#{testKeyBindingBean.submit }"    clientScript="return confirm('确认提交?');" />  

5.组件工程支持

Apusic组件工程旨在为开发OperaMasks原生组件提供开发期的支持,这其中包括:

  • 工程的创建和导出

  • 外部和内置OperaMasks类库管理

  • 资源和组件编辑器支持

  • 组件Handler类动态生成支持

  • Web编辑器动态加载支持

6.更多的组件模板支持

提供了更多的面向OperaMasks的内容辅助模板支持,可以在Web Page Editor中通过代码辅助使用这些模板,在模板内支持通过Tab键切换到组件的各个属性,使开发OperaMasks应用更为方便快捷,并可随时进行模板的定制和导入/导出

 

7.Web开发功能增强

针对OperaMasks Studio V6.0发布后反馈的情况,在V6.1版本中,对Web开发功能进行增强,其其中包括:

  • 关于拖组件<c:choose>时的代码增强
  • 为DrawImage组件添加IoVC支持
  • 为h:outputLabel value属性提供可视化支持
  • pagingLink属性栏增强
  • 其他特性.... 

8.HQL Editor功能增强

针对在日常开发期中,Hibernate 配置文件(cfg)或实体(entity)、实体配置文件(hbm)对比的情况,在V6.1版本中,HQL Editor能自动感知该特征文件的变化,从而进行动态加载,而无需手动进行刷新。如下图:

 

所有评论
david 2009-09-17 评论道:
先试用看看,很有诱惑力。
1   共1页
您还没有登录,请登录后发表评论