3

我正在使用 JBoss Wildfly 8.2.0 并注意到它<f:viewParam>在我的页面上被调用了两次:

  • 第一次是当我使用 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 请求会触发<f:viewParam>以及为什么只有第一个。

4

1 回答 1

3

是由<f:viewParam>.

JSF 实用程序库OmniFaces已通过其<o:viewParam>.

也可以看看:

于 2015-04-30T09:54:05.063 回答