【问题标题】:JSF Prevent commandLink to reload pageJSF 阻止 commandLink 重新加载页面
【发布时间】:2014-02-05 10:51:18
【问题描述】:

我需要阻止它,因为单击按钮时我会丢失页面中的参数。

这是我的代码:

<h:commandLink styleClass="ui-btn ui-btn-c ui-icon-arrow-r ui-btn-icon-right" value="Continuar" action="#{metaWEB.btnProximo()}" />

我在这里找到了一些结果,比如How make commandButton not fully refresh page? How to use f:ajax?

但我的操作使用来自页面的消息,因此需要重新加载表单,但页面不需要。

我找到了这个帖子https://stackoverflow.com/questions/18868130/preventing-jsf-commandbutton-from-reloading-the-page/18868374#18868374

我认为可能是我的解决方案,但我不明白他做了什么:(

感谢高级

【问题讨论】:

  • 你对 AJAX 有什么想法吗?
  • 除了@BalusC' 答案:你的listener 可以是任何方法,只要确保你这样称呼它:listener="#{metaWEB.btnProximo()}" - () 部分在这里很重要。

标签: javascript jquery jsf


【解决方案1】:

只需将其设为 ajax(异步)按钮,而不是常规(同步)按钮。这是在现有标签内嵌套&lt;f:ajax&gt; 的问题。

<h:commandLink ...>
    <f:ajax execute="@form" render="@form" />
</h:commandLink>

execute="@form" 告诉 JSF 处理整个表单(所有输入组件都包含在命令组件所在的表单中)。 render="@form" 告诉 JSF 将整个表单更新为 ajax 响应(因此,如果您在同一个表单中显示消息,它们也会被更新)。

不要忘记确保从按钮的操作方法返回nullvoid,否则视图可能仍会因非null/void 导航结果而改变。

另见:

【讨论】:

  • 噢,谢谢。我只需要调用 ajax 来呈现我的消息——'你让我走对了 ^^
  • 谢谢你救了我的一天,我被困了 4 个小时
【解决方案2】:

只需记住将 render="@none" 更改为不重新加载页面...

<f:ajax execute="@form" render="@none" />

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2020-07-24
    相关资源
    最近更新 更多