pe:inputNumber值返回null

时间:2014-03-07 10:11:11

标签: java jsf-2 primefaces xhtml primefaces-extensions

我有 p:dataTable

<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:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions"> 
<h:form id="form" prependId="false">
    <p:dataTable var="row" id="list" value="#{BB.dataTable}" rowIndexVar="i">
        <p:column headerText="#{bundle['id']}">
            <h:outputText value="#{row.id}" />
        </p:column>
        <p:columns var="fecha" value="#{BB.lFechaEntradaVigor}">
            <f:facet name="header">
                <h:outputText value="#{fecha}" />
            </f:facet>
            <h:outputText value="#{row.getCoste(fecha)}" styleClass="#{row.isValido(fecha)?'vigor':''}" rendered="#{!row.isUpdatable(fecha)}">
                <f:convertNumber groupingUsed="true" minFractionDigits="2" />
            </h:outputText>
            <pe:inputNumber value="#{BB.valor}" rendered="#{row.isUpdatable(fecha)}" >
                <p:ajax event="change" listener="#{BB.changeValor(fecha, row, i)}" />
            </pe:inputNumber>
        </p:columns>
    </p:dataTable>
    <p:commandButton value="#{bundleComunes.guardar}" action="#{BB.saveData()}" />
</h:form>

当我致电changeValor valor时,总是返回 null ,但是当我从pe:inputNumber中写出p:columns时,就会这样做。
任何想法???

4 个答案:

答案 0 :(得分:2)

将一个支持bean属性绑定到许多输入字段对我来说似乎很奇怪。尝试将组件值作为参数传递给changeValor():

<pe:inputNumber value="#{BB.valor}" rendered="#{row.isUpdatable(fecha)}" >
    <p:ajax event="change" listener="#{BB.changeValor(component.value, fecha, row, i)}" />
</pe:inputNumber>

或者更好的是使用远程命令。将以下内容放在桌子外面:

<pe:remoteCommand name="changeValor" 
    process="@this" 
    actionListener="#{BB.changeValor}" 
    global="false" 
    partialSubmit="true">
    <pe:methodSignature parameters="java.lang.String, java.lang.String, java.lang.String, java.lang.String" />
    <pe:methodParam name="valor" />
    <pe:methodParam name="fecha" />
    <pe:methodParam name="row" />
    <pe:methodParam name="i" />
</pe:remoteCommand>

不要忘记更正参数类型。

现在是inputNumber的标记:

<pe:inputNumber value="#{BB.valor}" rendered="#{row.isUpdatable(fecha)}"  onchange="changeValor(this.value, #{fecha}, #{row}, #{i})" />
</pe:inputNumber>

答案 1 :(得分:0)

尝试这样做:

   <pe:inputNumber value="#{BB.valor}"
decimalSeparator="," decimalPlaces="2" thousandSeparator="." emptyValue="0"
id="id1" style="width:100px" />

答案 2 :(得分:0)

解决方案是例如

ServletContext

工作正常!!!

答案 3 :(得分:-2)

<pe:inputNumber autocomplete="off" ... />