小编Dan*_*iel的帖子

Spring数据REST:使用适当的HTTP方法更新资源的关联

我正在使用Spring Data REST,我正在尝试使用Spring REST更改多对一关系,但我无法获得正确的http调用.

我的实体看起来像这样(像POST等创建的基本调用工作正常):

{
  "id" : 70,
  "productId" : yyy,
  "productdiscount" : 10,
  "version" : 0,
  "description" : "xxx",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/rest/rules/70"
    },
    "timedefinition" : {
      "href" : "http://localhost:8080/rest/rules/70/timedefinition"
    }
  }
}

我想将ID为1的当前时间定义更改为ID 2.

我尝试了很多不同的错误调用类型.以下电话无效.

 curl -X PUT -H "Content-Type: text/uri-list" -d 'http://localhost:8080/rest/timedefinition/1' http://localhost:8080/rest/rules/70/timedefinition

收到以下错误:

无法从类型java.lang.String转换为类型domain.TimeDefinition值为'0'; 嵌套异常是java.lang.IllegalArgumentException:为类domain.TimeDefinition提供了错误类型的id.预期:类java.lang.Integer,得到类java.lang.Long

另一个例子是:

curl -X PUT -H "Content-Type: application/json" -d '{"timedefinition": {"href" : "http://localhost:8080/rest/timedefinition/0", "rel" : "timedefinition"} }' http://localhost:8080/rest/rules/70/timedefinition

我得到的错误是:

"message":"必须只发送一个链接来更新不是List或Map的属性引用."

http://docs.spring.io/spring-data/rest/docs/2.0.1.RELEASE/reference/html/上的主要参考资料不能很好地提供有关上述主题的大量信息.

有关正确的REST查询格式以更新实体关联的任何见解和解释都非常感谢!

spring-data-rest

10
推荐指数
1
解决办法
4214
查看次数

使用EmbeddedGraphDatabase以服务器模式访问Neo4j?

如果我在服务器模式下运行neo4j以便可以使用REST API访问它,我可以使用EmbeddedGraphDatabase-class访问相同的neo4j实例吗?

我正在考虑一个生产设置,其中使用EmbeddedGraphDatabase的Java应用程序正在驱动逻辑,但其他客户端可能使用REST以只读模式导航数据.

neo4j

7
推荐指数
1
解决办法
2553
查看次数

使用JSP使用嵌入式Jetty会出现错误"web-jsptaglibrary_1_2.dtd not found"

我使用嵌入式Jetty来启动webapp,我使用JSP页面作为视图.

使用maven-jetty-plugin可以很好地进行测试,这让我觉得我在引导服务器时缺少一些依赖项(这是问题的根本原因).

我用命令引导Jetty:

java $JAVA_OPTS -cp target/classes:target/dependency/* xxx.Main
Run Code Online (Sandbox Code Playgroud)

我已经在Maven中使用了依赖插件,以确保获得类路径上的所有deps(在打包的war文件之外):

<execution>
<id>copy-dep</id>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
Run Code Online (Sandbox Code Playgroud)

Main类看起来像这样:

      Server server = new Server(8080);
    WebAppContext root = new WebAppContext();
    root.setContextPath("/");
    root.setWar("target/app.war");
    server.setHandler(root);
    server.start();
    server.join();
Run Code Online (Sandbox Code Playgroud)

嵌入式Jetty服务器启动时没有错误,但是当导航到返回JSP页面的URL时,我总是会收到此错误.

堆栈跟踪:

PWC6181: File /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd not found

Caused by:

org.xml.sax.SAXException: PWC6181: File /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd not found
at org.apache.jasper.xmlparser.MyEntityResolver.resolveEntity(ParserUtils.java:566)
at com.sun.org.apache.xerces.internal.util.EntityResolverWrapper.resolveEntity(EntityResolverWrapper.java:107)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:1018)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1192)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:296)
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:366)
at org.apache.jasper.runtime.TldScanner.scanTld(TldScanner.java:526) …
Run Code Online (Sandbox Code Playgroud)

jsp embedded-jetty

5
推荐指数
1
解决办法
3999
查看次数

在Spring中对JSR-303验证进行单元测试

我正在尝试使用JSR-303验证在spring中为带注释的bean添加单元测试.

这个bean很简单:

public class Bean {
   @Size(max=XX)  
   String text;  
}  
Run Code Online (Sandbox Code Playgroud)

在Spring配置中,我有所有必需的JAR文件:

 validation-api  
 hibernate-validator
Run Code Online (Sandbox Code Playgroud)

验证器初始化为:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
Run Code Online (Sandbox Code Playgroud)

我在测试用例中的尝试看起来像这样(弹簧和其他绒毛被移除):

@Autowired
private LocalValidatorFactoryBean factory;


@Test
public void testTemplateFormBeanValidation() {
// TODO exception at the moment. Can not resolve the validator. Provider issue.
factory.setProviderClass(HibernateValidator.class);
factory.setTraversableResolver(new DefaultTraversableResolver());
Validator val = factory.getValidator();
TemplateFormBean fb1 = new TemplateFormBean();
fb1.setText("this text works");
Set<ConstraintViolation<TemplateFormBean>> constraints = val.validate(fb1);
assertNull(constraints);

}
Run Code Online (Sandbox Code Playgroud)

当我运行此测试时,我得到以下堆栈跟踪:

java.lang.AbstractMethodError: javax/persistence/spi/PersistenceProvider.getProviderUtil()Ljavax/persistence/spi/ProviderUtil;
at javax.persistence.Persistence$1.isLoaded(Persistence.java:78)
at org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:62)
at org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:94)
at org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:47)
at org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:757)
at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:324)
at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:273)
at …
Run Code Online (Sandbox Code Playgroud)

spring hibernate-validator

3
推荐指数
1
解决办法
8266
查看次数