我正在使用spring MVC开发REST API。 其中一项服务用于通过某个请求对象获取列车详细信息。 请求对象:
TrainRequest implements Serializable {
private static final long serialVersionUID = 6280494678832642677L;
private String travelMonth;
private boolean departOnly;
}
我已使用以下请求来测试服务。
{
"travelMonth": "DEC2016",
"departOnly":0
}
我已经看到0被序列化并且被分配给departOnly为false。我也测试了0以外的其他并且使得departOnly为真。 但我不希望有布尔变量的数字输入。 帮助我如何限制Spring验证或Java在定义的布尔变量中只有true / false。
答案 0 :(得分:0)
TrainRequest implements Serializable {
private static final long serialVersionUID = 6280494678832642677L;
private String travelMonth;
private int departOnlyInt; // Serialized instead of departOnly
private transient boolean departOnly; // Not serialized
............................
private void writeObject(ObjectOutputStream o) throws IOException {
departOnlyInt = departOnly ? 1 : 0;
o.defaultWriteObject();
}
private void readObject(ObjectInputStream o) throws IOException,
ClassNotFoundException {
o.defaultReadObject();
switch(departOnlyInt) {
case 0:
departOnly = false; break;
case 1:
departOnly = true; break;
default:
throw new IOException ("Invalid boolean: " + departOnlyInt);
}
}
..................
}