我有一个primefaces(版本3.4.2)滑块和一个用于滑块值输出值的inputText。
问题是滑块的变化会更新 inputText 的显示值,但不会调用绑定(bind)到 inputText 的 setter。

这是我的滑块:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:a4j="http://richfaces.org/a4j">

    <h:head>
        <title>Zinsrechner</title>
    </h:head>

    <h:body>

        <h:form>
            <h:panelGrid columns="1" style="margin-bottom:10px">
                <p:inputText id="x" value="#{zinsrechner.monatlicherBeitrag}" />
                <p:slider minValue="0" maxValue="150" for="x" />
            </h:panelGrid>
        </h:form>

    </h:body>

</html>

这是我的二传手,不叫:
public void setMonatlicherBeitrag( Double beitrag ) {
    monatlicherBeitrag = beitrag;
}

Getter 被称为:
public Double getMonatlicherBeitrag() {
    return GuiParameter.getSpareinlageProMonat();
}

最佳答案

在您的Slider中添加<p:ajax>可以解决问题。

例子:

<p:slider minValue="0" maxValue="150" for="x">
    <p:ajax event="slideEnd" process="x" />
</p:slider>

关于Primefaces Slider 不调用 setter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13511711/

10-12 04:08