1

私はこれを持っています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

4 に答える 4

2

1 つのバッキング 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>
于 2014-03-11T21:49:57.260 に答える
0

解決策は例えば

  <p:inputNumber id="haberNumber" value="#{diarioController.haber}" >
                        <p:ajax update="haberNumber" />
</p:inputNumber>

うまくいく!!!

于 2016-09-22T17:58:33.863 に答える
-2
<pe:inputNumber autocomplete="off" ... />
于 2015-11-04T16:49:48.177 に答える