小编sum*_*mer的帖子

JAXB绑定文件将@XmlElement类型设置为String而不是XMLGregorianCalendar

我正在尝试创建一个XmlAdapter接收XMLGregorianCalendar并输出一个XMLGregorianCalendar.目的是简单地在解组数据时从元素中删除时区数据.

它看起来像这样:

public class TimezoneRemoverAdapter extends XmlAdapter<XMLGregorianCalendar, XMLGregorianCalendar> {
    public XMLGregorianCalendar unmarshal(XMLGregorianCalendar xgc) {
        if(xgc == null) {
            return null;
        }
        xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
        return xgc;
    }

    public XMLGregorianCalendar marshal(XMLGregorianCalendar xgc) {
        return xgc;
    }
}
Run Code Online (Sandbox Code Playgroud)

这适用于以下代码:

public class FooElement {
    @XmlElement(name="bar-date")
    @XmlJavaTypeAdapter(TimezoneRemoverAdapter.class)
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar barDate;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我使用jaxb-bindings.xml文件生成代码时,上面的代码如下所示:

public class FooElement {
    @XmlElement(name="bar-date", type=java.lang.String.class)
    @XmlJavaTypeAdapter(TimezoneRemoverAdapter.class)
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar barDate;
}
Run Code Online (Sandbox Code Playgroud)

它将类型设置为String,所以我的上述方法不起作用.类型String设置将覆盖XMLGregorianCalendar它应该的类型.我可以手动更改它,但我不必记住每次重新生成jaxb文件时都要更新它.有谁知道是否有手动设置@XmlElement类型或忽略它的选项? …

java xml generics jaxb

19
推荐指数
1
解决办法
4166
查看次数

使用最低特殊字符要求在Java中生成安全随机密码

如何创建符合Java中系统长度和字符集要求的随机密码?

我必须创建一个10-14个字符长的随机密码,并且至少有一个大写,一个小写和一个特殊字符.不幸的是,一些特殊字符特殊而且无法使用,所以我不能只使用打印的ASCII.

本网站上的许多示例都会生成随机密码或会话密钥,但字符中没有足够的熵,或者在上面给出的业务设置中没有实际要求,所以我要求更尖锐的问题来获得更好的答案.

我的角色集,标准美国键盘上的每个特殊字符,除了空格:

A-Z
a-z
0-9
~`!@#$%^&*()-_=+[{]}\|;:'",<.>/?
Run Code Online (Sandbox Code Playgroud)

java security random passwords

10
推荐指数
3
解决办法
4万
查看次数

标签 统计

java ×2

generics ×1

jaxb ×1

passwords ×1

random ×1

security ×1

xml ×1