JSF中的后退CommandButton

11

如何实现一个通用的命令按钮作为“后退”按钮?这里的“后退”不是指浏览器的后退按钮,而是指页面上某个位置的按钮。有时候无法使用 Post-redirect-get 模式。

在每个需要指向的页面传递信息是相当不切实际的。

是否有一种保留关键字,可以将导航规则指向最后应用的导航规则?

5个回答

17

在这种情况下,我使用带有属性 onclick="history.go(-1)"h:commandLink。它的作用是普适的。


1
本来希望这能帮到我,但似乎不能与h:commandButton一起使用。 :-( - Brian Knoblauch
3
你真的需要使用JSF标签来做这个吗?如果不是,可以试试用<input type="button" onclick="history.go(-1)" />来代替。它也能正常运行。 - alexmeia
似乎刷新了当前页面,但该页面已不再显示,因此任何ManagedProperties都将获得空指针异常。有什么想法可以防止这种情况发生吗? - K.Nicholas
5
我使用了 onclick="history.go(-1);return false;" 来防止原始页面提交。 - K.Nicholas
当我返回历史记录时,我遇到了相同的问题“空指针异常”:/ 我正在将参数传递给我的bean。:/ onclick="history.go(-1);return false;"可以返回,但是当我单击其他按钮时,jsf会出现此错误:Caused by: javax.el.PropertyNotFoundException: Target Unreachable,'null' returned null - arxzel
我解决了我的问题,使用根页面中的h:button。因此,当我执行'onclick="history.go(-1);return false;"'时,我们不会遇到“空指针异常”的问题。如果我写错了,请原谅,因为我是西班牙语母语者,我的英语很糟糕:D - arxzel

3

您可以使用:

<p:commandButton onclick="window.history.back();"/>

该指令与alexmeia所说的onclick="history.go(-1)"相同。

2
使用commandButton的错误方式。请使用p:button或在其中添加'type="button"'。请参阅PrimeFaces文档! - Kukeltje

3

My first idea :

on every

<h:commandLink .....>

等等,存储导航字符串在bean中,或者甚至是栈中,然后返回按钮可以检索它并按照faces-config.xml返回它。

第二个想法。

但仔细思考后,您应该覆盖或使用过滤器拦截导航命令并将它们推送到堆栈上。然后,返回按钮只需弹出导航,然后就可以继续了。


1

我会把导航字符串存储在一个栈数据类型中,您可以使用stack.peek()来显示您后面的站点,并且当它被点击时,会触发一个动作事件,从而触发stack.pop()


-1
我在我的选项卡视图中使用了“上一页”按钮,通过仅使用该按钮,导航工作得非常顺畅。
 <p:commandButton value="Previous" id="PreviousOffer" onclick="window.history.go(-1);return false;"/>

附言:当我没有使用return false;并且点击了上一个按钮时,它仅停留在当前页面。但是,在添加return false之后,它开始工作。


1
最好也将 type="button" 添加到其中,这样就不需要返回 false 了。 - Kukeltje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接