我有一个RPC服务,使用以下方法:
Run Code Online (Sandbox Code Playgroud)public List<Serializable> myMethod(TransactionCall call) {...}
但是在分析此方法时我收到警告,然后rpc调用失败
Run Code Online (Sandbox Code Playgroud)Analyzing 'my.project.package.myService' for serializable types Analyzing methods: public abstract java.util.List<java.io.Serializable> myMethod(my.project.package.TransactionCall call) Return type: java.util.List<java.io.Serializable> [...] java.io.Serializable Verifying instantiability (!) Checking all subtypes of Object wich qualify for serialization
似乎我不能将Serializable用于我的List ...我可以使用我自己的界面(类似于AsyncDataInterface,它实现了Serializable接口),但事实是我的方法将返回一个列表自定义对象和基本对象(如as Strings,int ....).
所以我的问题是:
我有一个自定义生成器,只为我的项目中的某些类生成代码.下面的代码位于generate方法的开头,并将我需要处理的所有类放在clazzes列表中
TypeOracle oracle = context.getTypeOracle();
JClassType markerInterfaceType = oracle.findType(MY_PARENT_CLASS.class.getName());
List<JClassType> clazzes = new ArrayList<JClassType>();
for (JClassType classType : oracle.getTypes()) {
if (!classType.equals(markerInterfaceType)
&& classType.isAssignableTo(markerInterfaceType)) {
clazzes.add(classType);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码已经保存了一年多,但自上周以来,似乎发电机没有考虑到几个等级.
经过一番挖掘,我发现那些类甚至不在返回的列表中 oracle.getTypes()
oracle.findType(MISSING_CLASS.class.getName()) 回报 null我最好的猜测是我在某处有缓存问题,但我不知道在哪里看.
我需要设置absolutePanel的大小与其子大小有关,但getOffset*方法返回0,因为(我认为)孩子还没有显示.
一个简单的例子:
AbsolutePanel aPanel = new AbsolutePanel();
HTML text = new HTML(/*variable lenght text*/);
int xPosition = 20; // actually variable
aPanel.add(text, xPosition, 0);
aPanel.setSize(xPosition + text .getOffsetWidth() + "px", "50px"); // 20px 50px
Run Code Online (Sandbox Code Playgroud)
我还可以通过使用AbsolutePanel大小来设置子位置和大小来解决我的问题:
AbsolutePanel aPanel = new AbsolutePanel();
aPanel.setSize("100%", "50px");
HTML text = new HTML(/*variable lenght text*/);
int xPosition = aPanel.getOffsetWidth() / 3; // Once again, getOffsetWidth() returns 0;
aPanel.add(text, xPosition, 0);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我必须找到一种方法:
someText
1
2
3
4
moreText
Run Code Online (Sandbox Code Playgroud)
我想在每个数字之前添加一个前缀.
但是使用(\w+\R)(\d+\R)+(\w+)并且\1prefix\2\3只会在最后一位数字前加上并删除其他数字.
有没有办法用一个正则表达式做或者我应该在旁边写一个脚本?
"core"指的是加载的应用程序的初始部分.
为了将url绑定到地方,GWT使用PlaceTokenizer<P extends Place>.从url加载应用程序时,它调用方法P getPlace(String token)来检索要调用的场所的新实例.
由于代码拆分的异步性质,我无法runAsync在此方法中创建一个位置.所以我必须把我的应用程序的所有位置放在核心.
为了将场所链接到活动,GWT调用Activity getActivity(Place place)(from com.google.gwt.activity.shared.ActivityMapper)来检索活动的新实例.
再次,我必须把我所有的活动放在核心.
这是我想尝试什么:编写一个自定义com.google.gwt.place.shared.Delegate的是
PlaceChangeRequestEvent.如果未加载与requestedPlace对应的AppPiece,则调用event.setWarning(NEED_TO_LOAD_MODULE)confirm(String message)方法中,当消息等于(因此它不打扰用户)时总是返回false NEED_TO_LOAD_MODULE,并通过加载模块RunAsync. goTo(requestedPlace)我的应用程序的每个AppPiece包含一堆活动和相应的视图.由于映射器仅在PlaceChangeEvent被触发时被调用,因此我可以通过生成我的活动的新实例AppPiece.getSomeActivityInstance().
我很确定这会起作用,但让我困扰的是那个
Delegate为此目的的压倒是棘手的,我正在寻找更好的解决方案