javaserverfaces属性访问问题

时间:2011-03-04 13:56:48

标签: java jsf-2

我有

的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时,如何避免二次调用?

1 个答案:

答案 0 :(得分:4)

不要使用POST进行页面到页面的导航。因此,请勿使用<h:commandLink><h:commandButton>导航到其他页面。它会不必要地将表单提交给服务器并重新创建相同的bean。只需使用<a><h:outputLink><h:link><h:button>进行页面到页面的导航即可。他们直接在目标网址上发出GET请求。

使用GET进行页面到页面导航的另一个优点是Searchbots将索引页面。因此,更适合SEO。