jsf中的后退命令按钮

Posted

技术标签:

【中文标题】jsf中的后退命令按钮【英文标题】:back commandbutton in jsf 【发布时间】:2010-10-13 14:02:41 【问题描述】:

如何将后退按钮实现为通用的命令按钮?后退按钮不是指浏览器按钮,而是位于页面某处的按钮。并不总是可以使用 Post-redirect-get 模式。

在每个按钮应该指向的地方传递信息是非常不切实际的。

是否存在指向最后应用的导航规则的导航规则的保留关键字?

【问题讨论】:

【参考方案1】:

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

【讨论】:

希望这能帮助我,但似乎不适用于 h:commandButton。 :-( 你真的需要为此使用 jsf 标签吗?如果没有,请尝试使用 。它会起作用的。 好像刷新了当前页面,不再显示,所以任何ManagedProperties都会得到空指针异常。任何想法如何防止这种情况? 我使用onclick="history.go(-1);return false;"来阻止提交原始页面。 当我回到历史时,我遇到了同样的问题“空指针异常”:/我正在将参数传递给我的 bean。 :/ onclick="history.go(-1);return false;"可以返回,但是,当我在其他按钮上单击时,jsf 出现此错误: 原因:javax.el.PropertyNotFoundException: Target Unreachable, 'null' returned null【参考方案2】:

我的第一个想法:

每一个

<h:commandLink .....>

等等;将导航字符串存储在 bean 甚至堆栈中,然后后退按钮可以检索它并根据 faces-config.xml 将其返回

第二个想法。

但在反射时,您应该覆盖或使用过滤器来拦截导航命令并将它们推送到堆栈上。然后后退按钮可以弹出导航,然后离开。

【讨论】:

【参考方案3】:

你可以使用:

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

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

【讨论】:

使用命令按钮的方式不好。使用 p:button 或添加 'type="button" 到它。请参阅 PrimeFaces 文档!【参考方案4】:

我会将导航字符串存储在堆栈数据类型中,然后您使用 stack.peek() 来显示您身后的站点,并在单击它时触发触发 stack.pop() 的操作事件

【讨论】:

【参考方案5】:

我在我的标签视图中使用了“上一个”按钮,并且仅使用导航就可以顺利进行

 <p:commandButton value="Previous" id="PreviousOffer" onclick="window.history.go(-1);return false;"/>

P.S.- 当我没有使用 return false; 并单击上一个按钮时,它只停留在当前页面上。但是,在添加 return false 后,它开始工作了。

【讨论】:

最好也加上type="button",这样就不需要返回false了

以上是关于jsf中的后退命令按钮的主要内容,如果未能解决你的问题,请参考以下文章

当通过链接或后退按钮打开时,强制 JSF 刷新页面/视图/表单

当用户在 JSF 中注销后单击后退按钮时重定向到登录页面 [重复]

JSF 动态绑定命令按钮

在 JSF 中禁用命令按钮

JSF 命令按钮

JSF 2.1 中的 HTML 4 <按钮>