在GWT中序列化对象

Mig*_*ing 6 java gwt serialization javabeans

使用GWT将bean序列化为字符串的最简单方法是什么?我不想使用GWT.create()调用.

Pet*_*erg 4

免责声明: 对于 GWT 来说,在 URL 上序列化 bean 并不是一个好主意。我了解到,如果需要在 URL 上放置数据,则数据应尽可能少,并且仅包含恢复页面状态所需的数据。看看 Gmail 如何使用其历史标记,您会发现它非常简单。

排除该免责声明后:

对于我从事的 GWT 项目,我只是简单地写出由分隔符分隔的 bean 值。当读回值时,我使用 String.split() 方法来获取数组。使用该数组,我将值分配回正确的 bean 属性。在代码中:

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];
    }
}
Run Code Online (Sandbox Code Playgroud)

对于更复杂的场景,您可能需要做更复杂的事情。例如,对于嵌套对象,您必须编写代码以将值传递给子对象。

另外,请注意,您必须确保您使用的任何值都不包含分隔符。因此,如果您知道字符串可能包含“/”,那么您可能必须对它们执行replace() 操作以转义任何嵌套分隔符。