我创建了一个复合组件,它实现了一个微调,我工作得很好,但是当我从primefaces 2.2.1更改为primefaces 3.3.1时,组件崩溃了所有的页面,当我尝试使用p :ajax而不是f:ajax。p:ajax正在崩溃复合组件
这里是组分:
<c:interface>
<c:attribute name="value" required="true"/>
<c:attribute name="fator" required="false" default="1"/>
<c:attribute name="required" required="false" default="false"/>
<c:attribute name="requiredMessage" required="false" default=""/>
<c:attribute name="validatorMessage" required="false" default="Não é um número válido!"/>
<c:attribute name="disabled" required="false" default="false"/>
<c:attribute name="title" required="false" default=""/>
<c:attribute name="width" required="false" default="100"/>
<c:attribute name="dinheiro" required="false" default="false"/>
<c:attribute name="local" required="false" default="pt-BR"/>
<c:attribute name="imediato" required="false" default="false"/>
<c:attribute name="onchange" required="false" default=""/>
<c:attribute name="onkeyup" required="false" default=""/>
<c:attribute name="max" required="false" default="-1"/>
<c:attribute name="min" required="false" default="0"/>
<c:attribute name="parametro" required="false" default=""/>
<c:attribute name="casasDecimais" required="false" default="2"/>
<c:attribute name="valueChangeListener" method-signature="void method(javax.faces.event.ValueChangeEvent)"
targets="spinner"/>
<c:attribute name="rendered" required="false" default="true"/>
<c:editableValueHolder name="#{cc.id}" targets="spinner"/>
<c:clientBehavior name="blur" default="true" event="blur"
targets="spinner"/>
<c:clientBehavior name="change" default="true" event="change"
targets="spinner"/>
</c:interface>
<c:implementation>
<h:outputStylesheet library="css" name="hrgiSpinner.css" target="head"/>
<h:outputScript library="js" name="jquery.formatCurrency-1.4.0.min.js" target="head"/>
<h:outputScript library="js" name="jquery.formatCurrency.pt-BR.js" target="head"/>
<h:outputScript library="js" name="hrgiSpinner.js" target="head"/>
<h:panelGroup layout="block" styleClass="hrgi-spinner" rendered="#{cc.attrs.rendered}">
<p:inputText id="spinner" value="#{cc.attrs.value}"
styleClass="hrgi-spinner-input editableField" disabled="#{cc.attrs.disabled}"
onchange="formatar(this,'#{cc.attrs.fator}','#{cc.attrs.local}','#{cc.attrs.dinheiro}','#{cc.attrs.max}','#{cc.attrs.min}','#{cc.attrs.casasDecimais}'); #{cc.attrs.onchange}"
required="#{cc.attrs.required}" requiredMessage="#{cc.attrs.requiredMessage}"
validatorMessage="#{cc.attrs.validatorMessage}" onkeyup="#{cc.attrs.onkeyup}"
title="#{cc.attrs.title}" immediate="#{cc.attrs.imediato}" style="width: #{cc.attrs.width}px;"
converterMessage="O valor informado não é um número.">
<f:attribute name="objeto" value="#{cc.attrs.parametro}"/>
</p:inputText>
<h:panelGroup layout="block" styleClass="hrgi-spinner-painel-botoes"
rendered="#{not cc.attrs.disabled}">
<div onmousedown="incrementar('#{cc.clientId}'+':spinner','#{cc.attrs.fator}','#{cc.attrs.local}','#{cc.attrs.dinheiro}','#{cc.attrs.max}','#{cc.attrs.min}','#{cc.attrs.casasDecimais}');"
class="hrgi-spinner-botao hrgi-spinner-botao-alto clearfix"/>
<div onmousedown="decrementar('#{cc.clientId}'+':spinner','#{cc.attrs.fator}','#{cc.attrs.local}','#{cc.attrs.dinheiro}','#{cc.attrs.max}','#{cc.attrs.min}','#{cc.attrs.casasDecimais}');"
class="hrgi-spinner-botao hrgi-spinner-botao-baixo clearfix"/>
</h:panelGroup>
<h:panelGroup layout="block"
styleClass="hrgi-spinner-painel-botoes hrgi-spinner-painel-botoes-desabilitados"
rendered="#{cc.attrs.disabled}">
<div class="hrgi-spinner-botao hrgi-spinner-botao-alto clearfix"/>
<div class="hrgi-spinner-botao hrgi-spinner-botao-baixo clearfix"/>
</h:panelGroup>
</h:panelGroup>
</c:implementation>
当我使用f:AJAX:
<hrgi:spinner id="aliquotaIpiItem" rendered="#{itemEmbrulhado.carregado}"
disabled="#{not modeloPopupLancamentoNF.lancamentoDanfe}"
value="#{controladorTabelaDinamicaItemNF.recuperarIPI(itemEmbrulhado).aliquota}"
dinheiro="false" fator="0.01" local="pt-BR" min="0.00" width="70"
parametro="#{itemEmbrulhado}">
<f:ajax render=":lancamentoNF:abasNF:painelItensNF :alerta" execute="@form"
event="blur" listener="#{controladorPopupLancamentoNF.validarAliquotasItemEAdicionar}"
onevent="definirFoco"/>
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" locale="#{cc.attrs.local}"
for="aliquotaIpiItem"/>
</hrgi:spinner>
当我使用号码:AJAX:
<hrgi:spinner id="aliquotaIpiItem" rendered="#{itemEmbrulhado.carregado}"
disabled="#{not modeloPopupLancamentoNF.lancamentoDanfe}"
value="#{controladorTabelaDinamicaItemNF.recuperarIPI(itemEmbrulhado).aliquota}"
dinheiro="false" fator="0.01" local="pt-BR" min="0.00" width="70"
parametro="#{itemEmbrulhado}">
<p:ajax update=":lancamentoNF:abasNF:painelItensNF :alerta" process="@form"
event="blur" listener="#{controladorPopupLancamentoNF.validarAliquotasItemEAdicionar(itemEmbrulhado)}"
onsuccess="salvarFoco();" oncomplete="carregarFoco(); exibirPopupAlerta(xhr, status, args);"/>
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" locale="#{cc.attrs.local}"
for="aliquotaIpiItem"/>
</hrgi:spinner>
有人能解释我发生了什么?
我试过使用primefaces微调,但不能更改小数分隔符。到, – brevleq
@brevleq真的吗?这很奇怪,因为它似乎是国际化的必要特征。也许在PrimeFaces论坛发布功能请求,看看是否有人已经请求了此功能。 –
我会再次在primefaces论坛上提问... – brevleq