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

手动转换ASObject为Java object

阅读更多
用Flex+BlazeDS时,如果你发现flex端传过来的参数是ASObject,而不是对应的Java object,那么你可以写代码手动转换,毕竟ASObject里面已经包含了所对应的Java Object的信息。下面是一些方法,有用了泛型的,有没有的,还有一个转换CriteriaVO的案例方法。

    
/**
 * If flex application is running in debug mode, then you need to manually
 * convert ASObject to your concrete object, otherwise you will receive some
 * exception like
 * "flex.messaging.io.amf.ASObject cannot be cast to your Class X"
 * , but in normal mode, you cannot do this, otherwise you will get an
 * opposite cast exception.
 * 
 * @param <E>
 * @param sourceObjects
 * @param targetObjectClass
 * @return
 * @throws InstantiationException
 * @throws IllegalAccessException
 */
@SuppressWarnings("unchecked")
public static <E> List<E> convertASObject2JavaObject(List<ASObject> sourceObjects, Class<E> targetObjectClass) throws InstantiationException, IllegalAccessException {
	List<E> targetObjects = new ArrayList<E>();
	ASTranslator ast = new ASTranslator();
	for (ASObject aso:sourceObjects) {
	    targetObjects.add((E) ast.convert(aso, targetObjectClass));
	}
	return targetObjects;
    }
    
@SuppressWarnings("unchecked")
public static <E> E convertASObject2JavaObject(ASObject sourceObject, Class<E> targetObjectClass){
	ASTranslator ast = new ASTranslator();
	return (E)ast.convert(sourceObject, targetObjectClass);
    }
    
public static Object convertASObject2JavaObject(ASObject sourceObject){
	ASTranslator ast = new ASTranslator();
	Object targetObject = null;
	try {
	    targetObject = ast.convert(sourceObject, Class.forName(sourceObject.getType()));
	} catch (ClassNotFoundException e) {
	    e.printStackTrace();
	}
	return targetObject;
    }
    
/**
 * In debug mode, the element type of an list is ASObject, we need to convert it to its
 * corresponding java object manually.
 * @param criteriaVO
 */
public static void convertASObject2JavaObject(CriteriaVO criteriaVO){
	List<FilterCriteriaVO<?>> filterCriterias=new ArrayList<FilterCriteriaVO<?>>();
	for(Object o:criteriaVO.getFilterCriteria()){
	    if(o instanceof ASObject){
		filterCriterias.add(convertASObject2JavaObject((ASObject)o,FilterCriteriaVO.class));
	    }else if(o instanceof FilterCriteriaVO){
		filterCriterias.add((FilterCriteriaVO<?>)o);
	    }
	}
	criteriaVO.setFilterCriteria(filterCriterias);
	
	List<SortCriteriaVO> sortCriterias=new ArrayList<SortCriteriaVO>();
	for(Object o:criteriaVO.getSortCriteria()){
	    if(o instanceof ASObject){
		sortCriterias.add(convertASObject2JavaObject((ASObject)o,SortCriteriaVO.class));
	    }else if(o instanceof SortCriteriaVO){
		sortCriterias.add((SortCriteriaVO)o);
	    }
	}
	criteriaVO.setSortCriteria(sortCriterias);
    }
分享到:
评论

相关推荐

    通过java将word文档转换成html页面

    在实际项目中,还可以考虑其他替代方案,如Apache POI,这是一个专门处理Microsoft Office格式的Java库,虽然它不直接支持Word到HTML的转换,但可以通过解析Word文档并手动构建HTML结构来实现。另一种方法是使用...

    openOficean实现opffice转换pdf转换的java实例

    在IT行业中,转换文档格式是一项常见的任务,尤其在企业级应用和自动化流程中。OpenOffice是一个免费且...通过学习和实践,开发者可以灵活地集成OpenOffice转换功能到自己的系统中,提高工作效率,减少手动操作的负担。

    [jacob]---------------->java 实现 word 转换为html jacob

    标题中的 "[jacob]----------------&gt;java 实现 word 转换为html jacob" 提示我们,这个压缩包文件包含了一个使用Java编程语言,并利用Jacob库将Microsoft Word文档转换为HTML格式的示例代码。Jacob是Java和COM...

    Flex类图和与Java交互时类型转换对照

    为了确保数据的准确传输,开发者需要了解这些类型间的差异,并在必要时进行手动转换。例如,当Java返回一个`BigDecimal`时,可能需要在Flex中特别处理以防止精度损失。 此外,使用第三方库如BlazeDS或 GraniteDS...

    Java实现word转PDF文件

    这个过程涉及到一个名为Jacob的库,它是一个Java和COM(Component Object Model)桥接库,允许Java程序调用COM组件,如Microsoft Office。 首先,我们需要理解Jacob的工作原理。Jacob通过JNI(Java Native ...

    groovy与java的区别1

    如果需要改变它们的类型,可以通过类型转换操作`as`来实现,例如将列表转换为LinkedList。 在面向对象编程方面,Groovy的类默认继承自GroovyObject,而不是Java的Object。这为Groovy提供了额外的动态特性,如动态...

    java带格式导出WORD文档

    2. **转换为XML**:将设计好的Word文档另存为XML格式,这一步是关键,因为XML格式允许我们更灵活地处理文档结构。 3. **标记数据填充位置**:使用Firstobject FreeXML Editor或其他工具,在需要填充数据的位置插入...

    C#与Java的区别

    C#的`is`和`as`操作符分别与Java的`instanceof`和类型转换操作类似,但`as`操作符会尝试转换并处理失败情况。 20. **内存管理**: C#允许手动内存管理,适合高性能场景,Java则采用自动垃圾回收机制。 21. **...

    Springboot DTO字符字段与日期字段的转换问题.docx

    这是因为JSON标准并没有定义日期的特定格式,所以需要我们手动处理这种转换。 在上述例子中,`UserDTO`类有一个`birthday`字段,它是`Date`类型。当前端提交包含日期字符串的JSON时,如`"birthday":"1983-03-18"`,...

    json转换实体类工具

    在Java、C#、VB.NET和TypeScript等编程语言中,开发人员经常需要将JSON字符串转换为实体类对象,以便于处理和操作数据。这个“json转换实体类工具”就是为了简化这一过程而设计的,它支持多个JSON数组的转换,并且...

    pdf转换txt

    1. **手动转换方法**: - **在线转换器**:互联网上有许多免费和付费的在线PDF转TXT服务,如SmallPDF、Adobe在线转换工具等。只需上传PDF文件,选择转换为TXT,然后下载转换后的文件。 - **桌面软件**:例如Adobe ...

    javascript制作sql转换为stringBuffer的小工具

    通过此工具,你可以先在SQL工具中编写并格式化好SQL语句,然后将其复制到提供的文本框中,点击“转换”按钮,JavaScript代码会将SQL转换为Java的StringBuffer形式。 此JavaScript脚本的工作原理如下: 1. 首先,...

    jacob word转html

    总的来说,`jacob`库为Java开发者提供了一个方便的工具,能够轻松地将Word文档转换为HTML,满足各种场景下的文件格式转换需求。然而,由于其依赖于本地的Office环境,可能在部署和维护上存在一定的局限性,需要根据...

    jacob-1.14.3-x64 x89已验证,可以使用

    5. **执行转换**: 调用COM对象的“SaveAs”或类似方法,将文档另存为PDF格式。 6. **关闭Office应用**: 完成转换后,释放COM对象并关闭Office应用。 需要注意的是,由于这种转换方式依赖于实际安装的Office软件,...

    powerbuilder-保存为pdf和xsl文件

    - 使用Java Printing API或其他工具将XSL-FO文件渲染为PDF。 3. **注意事项**: - XSL-FO转换方法适用于对PDF输出有更高定制需求的情况。 - 目前,PowerBuilder对于XSL-FO转换的支持不如GNU Ghostscript成熟。 ...

    excel文件转成json

    三、手动转换 在某些情况下,你可能需要手动编辑Excel文件,然后手动创建JSON。这通常适用于小规模数据或教学目的。在Excel中整理好数据后,按照JSON的键值对格式({key: value})在文本编辑器中编写JSON。 四、...

    转pdf工具(SaveAsPDFandXPS.exe和jacob)

    在IT行业中,转换文档格式是一项常见的任务,尤其是将办公文档如Word、PowerPoint和Excel转换为PDF格式。这种转换有助于保持文档的布局和格式一致性,方便打印和分享。本文将详细探讨两个工具——"SaveAsPDFandXPS....

    jacob-1.18.zip

    3. **执行转换**: 使用Word的COM接口,调用`SaveAs`方法,将文档保存为PDF格式。这里需要设置适当的文件路径和保存类型。 4. **关闭Word**: 转换完成后,通过`quit`方法关闭Word应用程序,释放资源。 在整个过程中...

    Java面试经典题

    - `Integer` 类提供了多种静态方法和实例方法来处理整数运算和转换。 #### 4. ArrayList, Vector, LinkedList 的存储性能和特性 - **ArrayList:** - 底层基于数组实现; - 随机访问速度快,适合频繁读取; - ...

Global site tag (gtag.js) - Google Analytics