【发布时间】:2015-07-09 17:11:27
【问题描述】:
我正在使用 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> 以及为什么只触发第一个。
【问题讨论】:
-
Mojarra 2.2.10 + Tomcat 也发生在我身上。我发现了这个相关的问题(顺便说一句,它没有解释行为):stackoverflow.com/questions/21222348/…
-
感谢您的链接。这真的很奇怪,因为我认为
<f:viewAction>会遇到同样的问题,但事实并非如此。所以我认为这是mojarra中的一个错误。如果只有某人(@BalusC ?)可以确认... -
@Tiny:是的!我在寻找骗子时想到了这个答案,但我找不到。
标签: jsf jsf-2.2 viewparams