【问题标题】:<f:viewParam> called again on first AJAX request [duplicate]<f:viewParam> 在第一个 AJAX 请求上再次调用 [重复]
【发布时间】:2015-07-09 17:11:27
【问题描述】:

我正在使用 JBoss Wildfly 8.2.0 并注意到 &lt;f:viewParam&gt; 在我的页面上被调用了两次:

  • 第一次是当我使用 URL 中的给定参数访问我的页面时
  • 第二次是在我从该页面发出的第一个 AJAX 请求时

豆子:

@Named
@javax.faces.view.ViewScoped
public class MessageBean implements Serializable {

    private String message;
    private int count;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        System.out.println("setting message");
        this.message = message;
    }

    public void increment() {
        this.count++;
    }

    public int getCount() {
        return count;
    }
}

XHTML:

<!DOCTYPE html ...>
<html ...>
    <f:metadata>
        <f:viewParam name="message" value="#{messageBean.message}" />
    </f:metadata>
    <h:head>
        <title>Message</title>
    </h:head>
    <h:body>
        <h:form>
            <h:outputText value="#{messageBean.message} (#{messageBean.count} time(s))" />
            <h:commandButton value="increment">
                <f:ajax render="@form" listener="#{messageBean.increment}" />
            </h:commandButton>
        </h:form>
    </h:body>
</html>

我不明白为什么 AJAX 请求会触发 &lt;f:viewParam&gt; 以及为什么只触发第一个。

【问题讨论】:

  • Mojarra 2.2.10 + Tomcat 也发生在我身上。我发现了这个相关的问题(顺便说一句,它没有解释行为):stackoverflow.com/questions/21222348/…
  • 感谢您的链接。这真的很奇怪,因为我认为&lt;f:viewAction&gt; 会遇到同样的问题,但事实并非如此。所以我认为这是mojarra中的一个错误。如果只有某人(@BalusC ?)可以确认...
  • @Tiny:是的!我在寻找骗子时想到了这个答案,但我找不到。

标签: jsf jsf-2.2 viewparams


【解决方案1】:

这是由statefulness 中的&lt;f:viewParam&gt; 引起的。

JSF 实用程序库OmniFaces 已通过其&lt;o:viewParam&gt; 解决了这个问题。

另见:

【讨论】:

    猜你喜欢
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多