0

我在 JSF 页面中有一个 inputText 和一个 commandButton。用户输入一些内容,然后在结果页面中被重定向,该页面也具有具有相同功能的 inputText 和 commandButton。commandButton 应该在单击并重定向到 REST url(结果页面)时执行一些操作,该 REST url 是通过将 inputText 值附加到基本 URL 来构建的。我尝试了很多东西,但我没有设法在第二页中完成这项工作。到目前为止我尝试的是:

  1. 在 commandButton 的操作中,我调用我的方法,然后返回重定向的 URL,因为我的 bean 中有 inputText 值。我使用 AJAX 在 keyup 事件上呈现 commandButton。这适用于第 1 页,但不适用于第 2 页。问题是每次用户键入一个字母时,都会呈现按钮并调用我不想要的方法,因为我只想在用户单击按钮时调用它们.

  2. 我在我的 bean 中创建了一个方法,我将所有方法都放入其中。我尝试创建 PostConstruct 方法并使用 preRenderView 使用 f:event 来调用该方法。同样,对于 AJAX,这不起作用,因为每次用户键入内容时都会调用该方法。

4

1 回答 1

1

问题是每次用户键入一个字母时,都会呈现按钮并调用我不想要的方法,因为我只想在用户单击按钮时调用它们。

只是不要渲染按钮。也许您在<f:ajax render>as 之类的属性中使用了过于笼统的客户端标识符@form。只需将其替换为不包括按钮的更具体的内容。


同样,对于 AJAX,这不起作用,因为每次用户键入内容时都会调用该方法。

只需检查它是否不是 ajax 请求。

if (!FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) { 
    // Not an ajax request.
}
于 2012-06-09T21:13:03.710 回答