我正在尝试创建一个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中系统长度和字符集要求的随机密码?
我必须创建一个10-14个字符长的随机密码,并且至少有一个大写,一个小写和一个特殊字符.不幸的是,一些特殊字符太特殊而且无法使用,所以我不能只使用打印的ASCII.
本网站上的许多示例都会生成随机密码或会话密钥,但字符中没有足够的熵,或者在上面给出的业务设置中没有实际要求,所以我要求更尖锐的问题来获得更好的答案.
我的角色集,标准美国键盘上的每个特殊字符,除了空格:
A-Z
a-z
0-9
~`!@#$%^&*()-_=+[{]}\|;:'",<.>/?
Run Code Online (Sandbox Code Playgroud)