@Entity
public class A{
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToMany(mappedBy = "A")
private List<B> b = new ArrayList<B>();
...
}
@Entity
public class B{
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotNull
@ManyToOne
@JoinColumn(name="aId")
private A a;
...
}
后端的这两个模型在前端有它们的对应。我添加_links部分是因为Spring Rest api提供链接而不是外键:
export class A{
id: number;
b: B[];
_links:{...}
...
}
export class B{
id: number;
a: A;
_links:{...}
...
}
我根据从API获得的信息创建了这些模型。例如,localhost:8080/api/b/1上的get请求给出:
{
"id" : 1,
"_links" : {
"self" : {
"href" : "http://localhost:4200/api/b/1"
},
"b" : {
"href" : "http://localhost:4200/api/b/1"
},
"a" : {
"href" : "http://localhost:4200/api/b/1/a"
}
}
}
我可以使用下面所示的angular 2服务方法轻松地在表A中插入新行(因为它不包含外键):
createA(a: A): Observable<A[]>{
return this.http.post(this.AUrl, a)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server Error'));
}
createB(b: B): Observable<B[]>{
return this.http.post(this.BUrl, b)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server Error'));
}
@RepositoryRestResource(collectionResourceRel="a", path="a", itemResourceRel="a")
public interface ARepository extends JpaRepository<A, Integer>{
}
@RepositoryRestResource(collectionResourceRel="b", path="b", itemResourceRel="b"))
public interface BRepository extends JpaRepository<B, Long>{
}
@Configuration
public class MyRestConfiguration extends RepositoryRestMvcConfiguration{
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config){
config.setBasePath("/api");
config.exposeIdsFor(A.class);
config.exposeIdsFor(B.class);
}
}
在Spring中,当我试图将新行插入到表B中时,会出现以下错误:
javax.validation.ConstraintViolationException: Validation failed for classes [......model.B] during update time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='may not be null', propertyPath=a, rootBeanClass=class ........model.B, messageTemplate='{javax.validation.constraints.NotNull.message}'}
]
我想知道http post请求的请求负载应该是什么样子的,以便应用程序在数据库中插入一个新的B行。非常感谢任何帮助。
编辑:
@PostMapping("/api/b")
@ResponseBody
public String createServis(@RequestBody B b){
}
{
id:1,
aId:1
}
{
id:1,
a:{id:1}
}
{
id:1,
aId:1,
a:{id:1}
}
对象b的属性a保持为null/未正确初始化。
我在这里得到了答案Spring REST:不能插入具有@manytoone列的行
基本情况下,您需要发布:
{
id: 1
a: "http://localhost:4200/api/a/1"
}
到url localhost:4200/api/b
我正在尝试使用Spring Security(4.1.3)和Angular 2.0.1实现CSRF保护 相关话题的来源很多,但我找不到明确的说明。有些说法甚至相互矛盾。 我读过关于springs的操作方法(尽管指南中描述了Angular 1 way)Spring Security guide,其中包含Angular,即
> 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?
我有一个Spring Boot项目,使用Jersey作为我的REST服务,并使用AngularJS进行我的前端开发。当我在不使用任何控制器的情况下运行它并转到index.html(位于resource/statig/index.html中)时,它运行得很好。当我添加一个控制器时,它呈现给出字符串“index.html”作为输出。Spring Boot配置: 球衣配置: 控制器类:
我有一个单页角应用与Spring引导。它看起来如下所示: Spring Boot正确地默认为webapp文件夹,并为index.html文件服务。 我想做的是:
我实际上正在学习Angular2,但我遇到了一个...CSS问题o_O我曾搜索过一个类似的问题,但没有任何成功,现在开始: 我在中有一个标记元素 我在div中设置了并使用来适应,但似乎根本不起作用,图片不适合div。 我很困惑因为这是第一次发生在我身上 请参阅:我使用styleUrls在组件中注入css规则 代码 谢谢!
编辑问题包括期望的行为, 我正在编写一个Angular 2应用程序,我不明白为什么Angular不能正确使用