我有
的index.html页面<h:dataTable id="usersTable" value="#{mainViewController.users}" var="user" border="1">
....
并请求范围化的mainViewController bean
@Component("mainViewController")
@Scope("request")
public class MainViewController {
@Inject
private UserDao userDao;
private Collection<User> users;
public Collection<User> getUsers() {
if (users == null) {
users = userDao.findAll();
}
return users;
}
当我访问index.html getUsers被调用时,这是绝对正常的,但是当我将index.html留给其他页面调用getUsers时,如何避免二次调用?
答案 0 :(得分:4)
不要使用POST进行页面到页面的导航。因此,请勿使用<h:commandLink>
或<h:commandButton>
导航到其他页面。它会不必要地将表单提交给服务器并重新创建相同的bean。只需使用<a>
,<h:outputLink>
,<h:link>
或<h:button>
进行页面到页面的导航即可。他们直接在目标网址上发出GET请求。
使用GET进行页面到页面导航的另一个优点是Searchbots将索引页面。因此,更适合SEO。