我有一个home
页面:
<f:metadata>
<f:viewAction action="#{booksBean.selectBook()}"/>
</f:metadata>
<h:head>
<title>home</title>
</h:head>
<h:body>
...
<h:link >
<h:graphicImage name="images/books/s1.jpg" />
<f:param name="isbn" value="25413652" />
</h:link>
...
</h:body>
当用户点击链接时,isbn
值已正确发送到booksBean.selectBook()
。
但问题是当用户从login
页面导航到home
页面时,
以下是userBean.login()
:
public String login() {
if (loginSuccessfully) {
return "home?faces-redirect=true"; // problem
} else {
//show error message
}
}
问题在上面提到的部分,当用户移动到home.xhtml
时会自动调用booksBean.selectBook()
,并且由于它已为空,我得到了NullPointerException
。
如何在不调用home
的情况下从login
页面转到booksBean.selectBook()
页面?
答案 0 :(得分:2)
您可以通过指定f:viewAction
条件来有选择地调用if
。在您的情况下,您似乎只想在回发时执行操作,在这种情况下,您可以:
<f:viewAction action="#{booksBean.selectBook()}" if="#{facesContext.postBack}"/>
相关:
答案 1 :(得分:0)
以下是不使用f:viewaction
<h:commandButton value="optional value" action="#{booksBean.selectBook()}">
<f:param name="isbn" value="25413652"></f:param>
<f:ajax execute="@form" render="@form"></f:ajax>
</h:commandButton>