Отказ от ответственности:
Сериализация bean-компонента в URL не такая уж хорошая идея для GWT. Я узнал, что если нужно поместить данные в URL, их должно быть как можно меньше и только то, что необходимо для восстановления состояния вашей страницы. Посмотрите, как Gmail использует свои маркеры истории, и вы увидите, что он довольно минимален.
С этим отказом от ответственности:
Для проекта GWT, над которым я работал, я просто выписал значения bean-компонента, разделенного разделителем. При чтении значений обратно я использовал метод String.split (), чтобы получить массив. С этим массивом я присваиваю значения обратно свойствам правого бина. В коде:
public class Sample {
private int a;
private boolean b;
private String c;
//getters and setters for fields not shown
public String toHistoryToken(){
return a+"/"+b+"/"+c;
}
public void fromHistoryToken(String token){
String[] values=token.split("/");
a=Integer.parseInt(values[0]);
b=Boolean.parseBoolean(values[1]);
c=values[2];
}
}
Для более сложных сценариев вам, возможно, придется делать более сложные вещи. Например, для вложенных объектов вы должны написать код для передачи значений дочерним объектам.
Кроме того, помните, что вы должны убедиться, что любые значения, которые вы используете, не содержат разделитель. Поэтому, если вы знаете, что ваши строки могут содержать «/», вам, возможно, придется выполнить операцию замены (), чтобы избежать вложенных разделителей.