如何告诉castor将空字段编组到空标签?

2024-01-03

我正在编组一个可以将某些字段设置为空的对象。我使用带有 xml 映射文件的 Castor 进行配置。我正在编组的课程是这样的:

class Entity {
    private int id;
    private String name;
    private String description; // THIS CAN BE NULL
    /* ... getters and setters follow ... */
}

...和这样的映射文件:

<mapping>
    <class name="Entity">
        <field name="id" type="integer"/>
        <field name="name" type="string"/>
        <field name="description" type="string"/>
    </class>
</mapping>

如果该字段为空,我现在得到的结果(简化示例):

<entity>
   <id>123</id>
   <name>Some Name</name>
</entity>

而我希望在生成的 XML 中有一个空标记,即使描述字段为空。

<entity>
   <id>123</id>
   <name>Some Name</name>
   <description /> <!-- open/close tags would be ok -->
</entity>

实现此目的的一种方法是使用 GeneralizedFieldHandler。这有点麻烦,但它适用于其他字符串字段。

Example:

<mapping>
    <class name="Entity">
        <field name="id" type="integer"/>
        <field name="name" type="string"/>
        <field name="description" type="string" handler="NullHandler"/>
    </class>
</mapping>


public class NullHandler extends GeneralizedFieldHandler {

    @Override
    public Object convertUponGet( Object arg0 )
    {
        if( arg0 == null )
        {
            return "";
        }

        return arg0;
    }

    @Override
    public Object convertUponSet( Object arg0 )
    {
        return arg0;
    }

    @Override
    public Class getFieldType()
    {
        return String.class;
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何告诉castor将空字段编组到空标签? 的相关文章

随机推荐

  • B 树与二叉树

    如果我使用 b 树实现内存 RAM 搜索操作 那么与二叉树相比 它在缓存或其他一些效果方面会更好吗 我所知道的是 binary search tress O log n btrees O c log n 各种博客上对此进行了很多讨论 Alg
  • Fluent Nhibernate - 选择特定列并使用分组进行计数查询

    我在流畅的 nhibernate 中执行查询时遇到一些问题 我有一个表 书籍 包含以下列 ID NAME YEAR BOOK TYPE AUTHOR ID 我想在 Fluent NHibernate 中执行以下 sql 查询 SELECT
  • 如何在 Android 手机图库中实用地获取图像的所有详细信息

    我正在尝试获取手机图库中图像可用的所有详细信息 特别是位置 当用户单击详细信息时 这些信息将会出现 所以请告诉我该怎么做 请参阅屏幕截图以更好地理解 提前致谢 你应该去Exif接口 http developer android com re
  • 使用逻辑运算符索引 numpy 数组

    我有一个 2d numpy 数组 例如 import numpy as np a1 np zeros 500 2 a1 0 np arange 0 500 a1 1 np arange 0 5 1000 2 could be also re
  • 将我的网站与 Google 日历集成

    我正在用 PHP 开发一个网站 该网站的用户可以从我提供的日历中进行预约 当用户进行预订时 应将其添加到我的谷歌日历中 对于这种情况 我需要什么样的身份验证机制 以下哪一项 1 网络应用程序 2 服务账户 3 安装的应用程序 注意 我不想访
  • Swift 3:获取 UIImage 中像素的颜色(更好:UIImageView)

    我尝试了不同的解决方案 例如this one https stackoverflow com questions 25146557 how do i get the color of a pixel in a uiimage with sw
  • React Native Lottie - 动画结束时反转

    Context 我是lottie react native的新手 并且已经成功实现了我的第一个动画 constructor props super props this state progress new Animated Value 0
  • 无限墙算法中的门

    问题 门在墙上你面对的是一堵向两个方向无限延伸的墙 墙上有一扇门 但你不知道有多远 也不知道在哪个方向 只有当你靠近门时你才能看到门 设计一种算法 使您能够通过最多步行 O n 步到达门 其中 n 是您的初始位置和门之间的 您未知的 步数
  • 在哪里获取 csv 样本数据? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 作为开发的一部分 我需要处理一些 csv 文件 重要的是我正在用 java 编写一个超快速的 CSV 解
  • pdf图像色彩空间麻烦ios

    EDIT我一直在使用的pdf文件显然是 indesign 格式 无论这意味着什么 因此没有颜色配置文件 有谁知道如果可能的话我如何自己添加配置文件 编辑结束 预先感谢任何人可以为解决此问题提供帮助 首先让我告诉你 我在 IOS 开发方面是个
  • 客户端:访问 Windows Azure 驱动器?

    我正在开发一个 Azure 应用程序 其中一部分涉及用户浏览在线文件系统 为此 我尝试使用 Windows Azure 驱动器 但我不知道如何从客户端访问它 或者如何使其在服务器端可访问 目前 我只知道如何制作驱动器 CloudStorag
  • Docker推送错误“413请求实体太大”

    我设置了registry v2并使用nginx作为反向代理 当我将图像推送到注册表时 出现错误413 Request Entity Too Large 我已在 nginx conf 中将 client max body size 修改为 2
  • 使用起始 X/Y 和起始+扫描角度获取 ArcSegment 中的终点

    有没有人有一个好的算法来计算终点ArcSegment 这不是圆弧 而是椭圆弧 例如 我有这些初始值 起点 X 0 251 起点 Y 0 928 宽度半径 0 436 高度半径 0 593 起始角度 169 51 扫掠角 123 78 我知道
  • nginx 重定向循环,从 url 中删除 index.php

    我想要任何请求 例如http example com whatever index php 执行 301 重定向到http example com whatever 我尝试添加 rewrite index php 1 permanent l
  • 在 Java Web 应用程序中运行常规后台事件

    在播客 15 中 Jeff 提到他在 Twitter 上谈到了如何在后台运行常规事件 就好像它是一个正常功能一样 不幸的是我似乎无法通过 Twitter 找到它 现在我需要做类似的事情 并将这个问题抛给大众 我当前的计划是 当第一个用户 可
  • android.os.SystemProperties 在 Junit 测试期间不保存值

    android os SystemProperties 不能从外部使用 因此反射用于设置和获取操作 看android os SystemProperties 在哪里 https stackoverflow com questions 264
  • 如何使用 Boost Filesystem 忽略隐藏文件(以及隐藏目录中的文件)?

    我使用以下命令递归地迭代目录中的所有文件 try for bf recursive directory iterator end dir dir end dir const bf path p dir gt path if bf is re
  • 我的 Sublime 首选项文件在哪里?

    我正在使用优秀的Sublime Text 3 编辑器 http www sublimetext com 3在我的 Mac 上 我想关闭自动换行功能 所以我去了Preferences gt Settings Default 这将打开一个设置文
  • 错误C2995:函数模板已被定义

    此代码产生 17 错误 C2995 函数模板已被定义 在添加 include set h 标头之前存在一组单独的错误 有一个与此相关的私有 cpp 和 h 文件 File private set cpp Last modified on T
  • 如何告诉castor将空字段编组到空标签?

    我正在编组一个可以将某些字段设置为空的对象 我使用带有 xml 映射文件的 Castor 进行配置 我正在编组的课程是这样的 class Entity private int id private String name private S