pe:inputNumber值重置为p:tab

时间:2015-12-30 04:20:03

标签: jsf primefaces negative-number primefaces-extensions

我的屏幕上有<p:tabView>,其中一个标签(<p:tab>)有几个<pe:inputNumber>,其minValue属性设置为-9999999999.99。当我输入正数或负数的任何值并在标签之间切换时,输入值将重置为其初始值,而对于未设置minValue的输入,它会在标签之间切换后保留输入的值。

我是否缺少设置的属性?或者有同样的解决方法吗?

编辑:我使用的是primefaces 5.3和primefaces-extensions 4.0.0。我的标签代码如下所示:

<p:tabView id="sections" style="width:inherit;background-color: #F0F0F0;">
        <p:ajax event="tabChange" listener="#{tabbedViewManagedBean.onTabChange}" />
        <p:ajax event="tabClose" listener="#{tabbedViewManagedBean.onTabClose}" />

        <p:tab title="First Tab" id="firsttab">
            <ui:include src="firsttab.xhtml" />
        </p:tab>

        <p:tab title="Second Tab" id="secondtab">
            <ui:include src="secondtab.xhtml" />
        </p:tab>
 </p:tabView>

选项卡式视图托管bean在选项卡之间切换时获取该选项卡的数据。每个选项卡都有自己的会话作用域托管bean。

secondtab.xhtml的代码是:

    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:c="http://java.sun.com/jstl/core"
        xmlns:p="http://primefaces.org/ui"
        xmlns:pe="http://primefaces.org/ui/extensions">

      <h:outputText value="Net Loss :" />
        <pe:inputNumber value="#{secondTabMB.netLoss}" 
           symbol="$ " minValue="-99999999999999.99" />

    </ui:composition>

Here's how my screen looks

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助:

<pe:inputNumber value="#{secondTabMB.netLoss}" 
       symbol="$ " minValue="-99999999999999.99">
    <p:ajax event="blur" global="false" />
</pe:inputNumber>

答案 1 :(得分:0)

我尝试使用此代码重新创建您的问题,但下面的代码按预期工作。我可以切换标签而不会丢失值:

@ManagedBean
@ViewScoped
public class Test {

    private Double input1;
    private Double input2;

//Getters & Setters
}

HTML

<h:form>
    <p:tabView>
        <p:tab title="Input1">
            <h:outputText value="Net Loss :" />
            <div class="form-element-wrapper">
                <pe:inputNumber value="#{test.input1}" symbol="$ " >
                    <p:ajax process="@this"/>
                </pe:inputNumber>
            </div>

        </p:tab>
        <p:tab title="Input2">
            <h:outputText value="Net Loss :" />
            <div class="form-element-wrapper">
                <pe:inputNumber value="#{test.input2}" symbol="$ " minValue="-99999999999999.99" >
                    <p:ajax process="@this"/>
                </pe:inputNumber>
            </div>
        </p:tab>
    </p:tabView>
</h:form>

我添加了process =“@ this”只是为了在失去焦点时做一个ajax提交。

你可以从你的ajax请求中提供以下代码吗?:

<p:ajax event="tabChange" listener="#{tabbedViewManagedBean.onTabChange}" />