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 刷新页面/视图/表单