为什么rich:inputNumberSlider不更新支持bean(@Managed Bean)

时间:2013-08-31 13:22:39

标签: jsf-2 richfaces

Richfaces的inputNumberSlider在我的情况下无法立即更新支持bean。永远不会调用setter方法。我说对了,应该在更改时更新支持bean字段吗?

<rich:inputNumberSlider 
id="severityLevel" 
value="#{pubController.severityLevel}"
minValue="1" 
maxValue="3" 
maxlength="1" />

我确实在setter方法中设置了一个断点,但它从未上升过。我必须说,它适用于所有h:inputText标签。

1 个答案:

答案 0 :(得分:1)

在您提交包含setSecurityLevel的表单之前,永远不会调用rich:inputNumberSlider setter。

或者,您可以在inputNumberSlider更改时设置值,每个事件处理添加一个ajax,这将执行您的组件(我不使用richfaces,但这将是所需的格式) :

<h:form>
    <rich:inputNumberSlider id="severityLevel" value="#{pubController.severityLevel}"
        minValue="1" maxValue="3" maxlength="1" >
        <a4j:ajax event="change" execute="@this" />
    </rich:inputNumberSlider>
</h:form>

通常,除非您想在用户更改输入值时执行某种验证(这也可能对render dependent components有用),否则这种行为是不需要的。在大多数情况下,一旦发布整个表单,就会对所有组件执行验证。