我正在使用Spring MVC来处理JSON POST请求.在封面下我使用基于Jackson JSON处理器构建的MappingJacksonHttpMessageConverter,并在使用mvc:annotation-driven时启用.
我的一个服务收到一系列操作:
@RequestMapping(value="/executeActions", method=RequestMethod.POST)
public @ResponseBody String executeActions(@RequestBody List<ActionImpl> actions) {
logger.info("executeActions");
return "ACK";
}
Run Code Online (Sandbox Code Playgroud)
我发现Jackson将requestBody映射到java.util.LinkedHashMap项目列表(简单数据绑定).相反,我希望将请求绑定到类型化对象列表(在本例中为"ActionImpl").
我知道如果直接使用Jackson的ObjectMapper,这很容易做到:
List<ActionImpl> result = mapper.readValue(src, new TypeReference<List<ActionImpl>>() { });
Run Code Online (Sandbox Code Playgroud)
但我想知道在使用Spring MVC和MappingJacksonHttpMessageConverter时实现这一目标的最佳方法是什么.任何提示?
谢谢
我正在开发一个使用JSR 303验证的Spring后端的GWT应用程序.应用程序可以脱机并使用浏览器HTML5/Gears数据库.
实现客户端验证的最佳方法是什么?到目前为止,我已经找到了gwt-validation框架(http://code.google.com/p/gwt-validation/),但它似乎已不再有效.
谢谢!
更新:
有一个新的GWT官方项目来支持JSR 303 Bean Validation(链接在这里).IMO这是项目成熟后的方法.
我有两个包含相同类型对象的地图:
Map<String, TaskJSO> a = new HashMap<String, TaskJSO>();
Map<String, TaskJSO> b = new HashMap<String, TaskJSO>();
public class TaskJSO { String id; }
Run Code Online (Sandbox Code Playgroud)
地图键是"id"属性.
a.put(taskJSO.getId(), taskJSO);
Run Code Online (Sandbox Code Playgroud)
我想获得一个列表:"Map b"中的所有值+"Map a"中不在"Map b"中的所有值.
这项操作的最快方法是什么?
谢谢
编辑:比较由id完成.因此,如果两个TaskJSO具有相同的id(等于方法被覆盖),则认为它们是相等的.
我的目的是从性能的角度来了解哪种方法最快.例如,如果我在地图中执行"比较"(如彼得所建议的那样),是否有任何区别:
Map<String, TaskJSO> ab = new HashMap<String, TaskJSO>(a);
ab.putAll(b);
ab.values()
Run Code Online (Sandbox Code Playgroud)
或者如果我使用一套(如Nishant所建议):
Set s = new Hashset();
s.addAll(a.values());
s.addAll(b.values());
Run Code Online (Sandbox Code Playgroud) 我正在使用GWT 2.1 java.util.logging 仿真来记录客户端消息.根据该文档,提供了两个适用于客户端日志记录的格式化程序(TextFormatter和HTMLFormatter).
任何人都可以提供一个如何设置格式化程序并将其附加到GWT中的处理程序的示例吗?
谢谢
我发现编译后的JavaScript的大小增长速度比我预期的要快.在我的项目中添加几行Java代码可以增加几个Kbs的脚本大小.
目前,我编译的项目重量为1Mb.除了MVP(活动和地点),测试(JUnit)和日志记录之外,我没有使用任何外部库.
我想知道是否有任何编码实践/建议,以保持编译脚本尽可能小.我不是指代码拆分,而是编码技术或模式,可以使编译的JavaScript有效地缩小.
非常感谢
我正在尝试实现一个类型安全的异构容器来存储异构对象的列表.
我已经看到了几个类型安全异构容器模式(链接)的exameples,但它们都存储了一个类型的单个对象.
我试着按如下方式实现它:
public class EntityOrganizer {
private Map<Class<?>, List<Object>> entityMap = new HashMap<Class<?>, List<Object>>();
public <T> List<T> getEntities(Class<T> clazz) {
return entityMap.containsKey(clazz) ? entityMap.get(clazz) : Collections.EMPTY_LIST;
}
private <T> void addEntity(Class<T> clazz, T entity) {
List<T> entityList = (List<T>) entityMap.get(clazz);
if(entityList == null) {
entityList = new ArrayList<T>();
entityMap.put(clazz, (List<Object>) entityList);
}
entityList.add(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是这段代码充满了未经检查的演员阵容.有人可以帮助更好地实现这个吗?
非常感谢
这是我需要扩展的外部类:
public class Binary {
public Binary( byte type , byte[] data ){
_type = type;
_data = data;
}
public byte getType(){
return _type;
}
public byte[] getData(){
return _data;
}
public int length(){
return _data.length;
}
final byte _type;
final byte[] _data;
}
Run Code Online (Sandbox Code Playgroud)
这是我创建的子类:
import org.bson.types.Binary;
public class NoahId extends Binary {
public NoahId(byte[] data) {
//Constructor call must be the first statement in a constructor
super((byte) 0 , data);
}
}
Run Code Online (Sandbox Code Playgroud)
我想强制所有子类(NoahId)具有某个长度的byte []数据,否则抛出异常.如果构造函数调用必须是子类构造函数中的第一个语句,我该如何执行此类检查?
使用静态方法创建我的类允许我进行检查,但我仍然需要定义一个显式构造函数.
制作gwt叠加类型的深层副本的最佳方法是什么?
我正在寻找一个功能或库来检查GWT覆盖并克隆它.它必须能够克隆包含的数组或对象.
谢谢
gwt ×5
java ×3
clone ×1
collections ×1
generics ×1
guava ×1
hashmap ×1
jackson ×1
javascript ×1
json ×1
logging ×1
overlay ×1
performance ×1
rest ×1
spring ×1
spring-mvc ×1
validation ×1