我刚刚在我现有的Spring + BlazeDS + Hibernate服务器上添加了一个REST api,当数据被检索并序列化为JSON时,一切似乎都有效,但是当我尝试将POST数据反序列化为POJO时,我得到了一个例外.
我的印象是弹簧注释和类路径中杰克逊罐子的存在将是所有需要的,至少它是我的列表,获取,删除具有简单参数的方法.
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class com.twoh.dto.Company] from JSON String; no single-String constructor/factory method
Run Code Online (Sandbox Code Playgroud)
这是被调用的方法:
public abstract class BaseEntityService<T extends BaseEntity> implements IBaseEntityService<T> {
private IBaseEntityDAO<T> DAO;
@Autowired
private ValidationResultHelper validationResultHelper;
public void setDAO(IBaseEntityDAO<T> DAO) {
this.DAO = DAO;
}
...
@Secured("ROLE_USER")
@RequestMapping(value="/create", method=RequestMethod.POST)
public @ResponseBody ValidationResult create(@RequestBody T entity) {
ValidationResult result = null;
try {
result = DAO.persistEntity(entity);
} catch(JDBCException e) {
result = ExceptionHelper.getValidationResult(e);
} catch(DataIntegrityViolationException …Run Code Online (Sandbox Code Playgroud) 我在下面的查询是在列列表中选择一个常量,我希望aliasToBean将字符串转换为适当的枚举类型.
我已将具有枚举属性的其他实体映射为字符串,并且没有任何问题.
@SuppressWarnings("unchecked")
List<AssociatedEntity> fileList = queryUtil.createHQLQuery((
"select '" + AssociatedEntityTypeEnum.ASSOCIATED_ENTITY_TYPE_FILE + "' as associatedEntityType," +
" a.file2Id as id," +
" f.name as name" +
" from File f, Association a" +
" where f.id = :fileId" +
" and a.file1Id = f.id" +
" and a.associationType = :associationType"
))
.setParameter("fileId", fileId)
.setParameter("associationType", AssociationTypeEnum.ASSOCIATION_TYPE_FILE_FILE)
.setResultTransformer(Transformers.aliasToBean(AssociatedEntity.class))
.list();
Run Code Online (Sandbox Code Playgroud)
这是豆子:
public class AssociatedEntity {
public AssociatedEntity() {}
@Enumerated(EnumType.STRING)
private AssociatedEntityTypeEnum associatedEntityType;
public AssociatedEntityTypeEnum getAssociatedEntityType() { return this.associatedEntityType; }
public void setAssociatedEntityType(AssociatedEntityTypeEnum associatedEntityType) …Run Code Online (Sandbox Code Playgroud) 我有一个数据库卸载文件,其字段用<TAB>字符分隔.我通过sed运行此文件,用<TAB>\N <TAB>替换<TAB> <TAB>的任何出现.这样,当文件加载到MySQL时,\ N被解释为NULL.
sed命令的/\t\t\\ t\N\t/g;' 几乎可以工作,只是它只替换第一个实例,例如"... <TAB> <TAB> <TAB> ..."变为"... <TAB>\N <TAB> <TAB> ...".
如果我使用's /\t\t /\t\N\t/g; s /\t\t /\t\N\t/g;' 它取代了更多的实例.
我有一个想法,尽管/ g修饰符这与一个匹配的结束是另一个的开始有关.
任何人都可以解释发生了什么,并建议一个sed命令可以工作或我需要循环.
我知道我可以切换到awk,perl,python,但我想知道sed中发生了什么.
我刚刚开始使用fancytree 2.6.0,我从Web服务请求填充它.
我的问题是所有节点都存在但是被ui-helper-hidden类隐藏了.我已经使用以下命令进行临时修复:$(rootNode.ul).removeClass('ui-helper-hidden'); 但我相信我错过了一些东西.
脚本和css:
<link href="Scripts/jquery-plugins/fancytree-2.6.0/src/skin-themeroller/ui.fancytree.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery-1.11.1/jquery-1.11.1.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.11.1/jquery-migrate-1.2.1.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.11.2/jquery-ui.js" type="text/javascript"></script>
<script src="Scripts/jquery-plugins/fancytree-2.6.0/src/jquery.fancytree.js" type="text/javascript"> </script>
<script src="Scripts/jquery-plugins/fancytree-2.6.0/src/jquery.fancytree.themeroller.js" type="text/javascript"> </script>
Run Code Online (Sandbox Code Playgroud)
代码:
$('#selectedClausesDiv').fancytree();
$.when(
$.getJSON("Handlers/GetQuotationHandler.ashx?jsoncallback=?", { quoteReference: quoteReference, quoteVersion: quoteVersion })
).then(function (data) {
if (data.ErrorCode == 0 && data.Quotation != null) {
var rootNode = $("#selectedClausesDiv").fancytree("getRootNode");
$.each(data.Quotation.Covers, function (index, item) {
addCover(rootNode, item);
});
// FIXME: why is this necessary ??
// $(rootNode.ul).removeClass('ui-helper-hidden');
}
});
function addCover(rootNode, cover) {
var coverId = 'selected_' …Run Code Online (Sandbox Code Playgroud) 我刚刚用Hibernate实现了Bean Validation.
如果我显式调用验证器它按预期工作,并且按预期注入连接到DB的@Autowired DAO bean.
我以前发现我需要在上面的内容之前添加以下语句.之前我已经广泛使用了@Autowired bean,但下面的语句对于由Spring管理验证器和注入ConstraintValidator的bean是必要的.
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
Run Code Online (Sandbox Code Playgroud)
但是,当在SessionFactory.getCurrentSession.merge期间自动调用验证器时,bean为null.
如果我通过调用javax.Validation.validate直接调用验证器,它的工作原理使我认为我已正确设置了Spring配置.
我已经读过人们无法获得DAO bean @Autowired的帖子的数字,但在我的情况下,除了在合并期间调用时.
下面的日志输出显示首先直接调用验证器,然后作为合并操作的结果调用.
07.12.2011 01:58:13 INFO [http-8080-1] (FileTypeAndClassValidator:isValid) - Validating ...
07.12.2011 01:58:13 INFO [http-8080-1] (ConstraintValidatorHelper:getPropertyValue) - propertyName=className, returnValue=com.twoh.dto.PurchaseOrder
07.12.2011 01:58:13 INFO [http-8080-1] (ConstraintValidatorHelper:getPropertyValue) - propertyName=fileTypeId, returnValue=4
07.12.2011 01:58:13 INFO [http-8080-1] (QueryUtil:createHQLQuery) - select ft.id from FileType ft where ft.id = :fileTypeId and ft.fileClassName = :fileClassName
07.12.2011 01:58:13 INFO [http-8080-1] (BaseDAO:merge) - Entity: com.twoh.dto.PurchaseOrder: 1036.
07.12.2011 01:58:13 INFO [http-8080-1] (FileTypeAndClassValidator:isValid) - Validating ...
07.12.2011 01:58:13 INFO …Run Code Online (Sandbox Code Playgroud)