‹f:viewParam› вызывается снова при первом запросе AJAX

Я использую 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> и почему только первый.


person Xavier Dury    schedule 30.04.2015    source источник
comment
У меня также происходит с Mojarra 2.2.10 + Tomcat. Я нашел этот связанный вопрос (который не объясняет поведение BTW): заголовок stackoverflow.com/questions/21222348/   -  person Xtreme Biker    schedule 30.04.2015
comment
Спасибо за ссылку. Это действительно странно, потому что я думал, что у <f:viewAction> будет такая же проблема, но это не так. Так что я думаю, что это ошибка в мохарре. Если бы кто-нибудь (@BalusC ?) мог подтвердить...   -  person Xavier Dury    schedule 30.04.2015
comment
@Tiny: Да! Я имел в виду этот ответ, когда искал обман, но я не мог его найти.   -  person BalusC    schedule 30.04.2015


Ответы (1)


Это вызвано отслеживанием состояния файла <f:viewParam>.

Вспомогательная библиотека JSF OmniFaces решила эту проблему с помощью <o:viewParam>.

Смотрите также:

person BalusC    schedule 30.04.2015