我不明白我应该用什么.我有两个页面--intro.jsp(1)和booksList.jsp(2).对于每个页面,我创建了一个Controller类.第一页有按钮打开第二页:
<form method="GET" action="/request-list">
<input type="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)
第一个问题是:我不确定这个按钮的正确性.它运作良好,但按下此按钮后我有问号.
第二个问题是:当我按下该按钮时,调用带有下一个注释的方法(第二页的控制器):
@RequestMapping(value = "/books")
@Controller
public class BooksListController {
@RequestMapping
public String booksList() {
return "jsp/books/booksList";
}
}
Run Code Online (Sandbox Code Playgroud)
我应该通过这种方法返回什么?换句话说,如何从第一页跳到第二页?
return "redirect:/books"; returns http://localhost:8080/books?return "jsp/books/booksList"; returns http://localhost:8080/request-list?return "forward:/books"; returns http://localhost:8080/request-list?我看到结果是一样的:所有这些字符串给了我相同的页面(第2页被打开).在哪些情况下我应该使用"重定向","前进","page.jsp"?
我也读过Post/Redirect/Get文章.POST方法处理后我是否必须使用"重定向"?
我有两个具有“一对多”关系的表。我使用Jpa + Spring JpaRepository。有时我必须从带有内部对象的数据库中获取对象。有时我不必。存储库始终返回带有内部对象的对象。我尝试从数据库中获取“所有者”,并且总是获得Set书籍;没关系。但是,当我阅读此内部Book的字段时,会收到LazyInitializationException。如何获取null而不是Exception?
@Entity
@Table(name = "owners")
@NamedEntityGraph(name = "Owner.books",
attributeNodes = @NamedAttributeNode("books"))
public class Owner implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "owner_id", nullable = false, unique = true)
private Long id;
@Column(name = "owner_name", nullable = false)
private String name;
@OneToMany(fetch = FetchType.LAZY,mappedBy = "owner")
private Set<Book> books= new HashSet<>(0);
public Worker() {
}
}
@Entity
@Table(name = "books")
@NamedEntityGraph(name = "Book.owner",
attributeNodes = @NamedAttributeNode("owner"))
public class Book implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) …Run Code Online (Sandbox Code Playgroud)