是否可以有一个commandButton执行某个后备bean的方法,然后又导航到另一个页面?
我知道我可以在commandButton调用的方法中返回String,但是该方法也用在目标页面上,这意味着通常在同一页面上调用它。 因此,对于来自同一页面的呼叫,重定向是不必要的,我想避免这种情况。
我现在想到的选项:
我缺少任何选择吗?有什么方法可以告诉commandButton自己应该导航到某个地方,还是必须在后备豆中实现呢?
答案 0 :(得分:1)
您的标题和第一句话很“危险”,因为两者都不是话题,答案是肯定的,并且您在第二段中已经描述了自己(=答案)。
真正的问题进一步有效地询问了条件导航。但是,首先让我指出,如果您只是确保不在bean(which you should not)中进行实际工作,那么您对两种方法的解决方案也没有错。
现在条件导航本身并不困难
我想您已经知道的所有基本JSF,这只需要做某事即可
因此,问题仍然存在,
可以用来返回null或if / else中的另一个新页面。
第1页:
<h:commandButton action="#{mybean.action(true))" />
第2页:
<h:commandButton action="#{mybean.action(false))" />
豆:
public String action(boolean navigate) {
doWork();
if (navigate) {
return "page2.xhtml?faces-redirect=true";
} else {
return null;
}
如果需要的话,甚至可以将null或页面名称作为参数传递给方法调用。
实现对操作源页面的检测的优点在于,在UI中,您不需要任何有关导航的知识,您总是调用相同的方法而没有任何参数,并且每个新页面都将用于此操作导航到正确的页面,而不需要开发任何知识。
所以请你选择。
答案 1 :(得分:-1)
我不确定我是否正确,但是您可以执行以下操作:
<h:commandButton value="Click" action="otherPage.xhtml?faces-redirect=true">
<f:actionListener binding="#{bean.method}" />
</h:commandButton>
记之后actionListener
从的commandButton记住,action
会先启用和。希望对您有所帮助。
更新:
由于没有进一步的考虑,您可以在有或没有重定向的情况下使用commandButton
。
<h:commandButton value="Click" action="{bean.method}"/>