pe:inputNumber 值重置为 p:tab 内的初始值
pe:inputNumber value resetting to initial value inside p:tab
我的屏幕上有一个 <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>
这可能有帮助:
<pe:inputNumber value="#{secondTabMB.netLoss}"
symbol="$ " minValue="-99999999999999.99">
<p:ajax event="blur" global="false" />
</pe:inputNumber>
我试图用这段代码重现您的问题,但下面的代码按预期工作。我可以在不丢失值的情况下切换标签:
豆子
@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}" />
我的屏幕上有一个 <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>
这可能有帮助:
<pe:inputNumber value="#{secondTabMB.netLoss}"
symbol="$ " minValue="-99999999999999.99">
<p:ajax event="blur" global="false" />
</pe:inputNumber>
我试图用这段代码重现您的问题,但下面的代码按预期工作。我可以在不丢失值的情况下切换标签:
豆子
@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}" />