Quantcast
Channel: GUJ - Tópicos com a tag primefaces
Viewing all articles
Browse latest Browse all 578

Bug na validação de campo texto no JSF PrimeFaces (treeTable)

$
0
0

@danieldestro escreveu:

Estou com um bug em uma página do sistema que precisa validar um campo numérico de forma dinâmica com JSF.

Basicamente, tenho um facelet (xhtml) com um campo que tem validação (com componente do Omnifaces) para verificar os valores mínimo e máximo permitidos após a digitação do usuário (disparado no blur e no ENTER).

Quando o evento de validação é disparado, ocorre um erro que trava (bloqueia) a tela em questão e o usuário não consegue fazer mais nada (aquela tela/layer cinza que bloqueia ação do usuário). Tem que dar um refresh na tela para continuar (nem F5 funciona, tem que clicar no botão refresh).

O navegador me mostra um erro de parsing de JSON no jquery.js provido pelo próprio PrimeFaces, com a seguinte mensagem:

"Uncaught SyntaxError: Unexpected token , in JSON at position 1".

Fiz um hack no jquery.js para exibir o JSON com erro e ele, de fato, tem uma vírgula a mais:

{,"validationFailed":true}

Quando a validação funciona (valor digitado está correto) essa vírgula a mais não existe no JSON.

Fiz alguns testes e percebi que o erro ocorrer porque há algum tipo de incompatibilidade da validação com o componente que existe na mesma tela. Quando eu removo este componente treeTable, a tela e a validação funcionam normalmente. Também percebi que o erro ocorre por conta da ordenação que existe nesse componente (sortBy). Se eu removo este atributo ele também funciona.

Estou usando java 8 (OpenJDK 1.8), Tomcat 7, JSF 2.2.10, PrimeFaces 5.2, PrimeFaces Extensions 3.2.0, OmniFaces 1.14, Spring Faces 2.4.4, Spring Secutiry 3.2.8, Spring 4.2.0.

Segue trecho de código do facelet:

<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:o="http://omnifaces.org/ui"
xmlns:of="http://omnifaces.org/functions"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:casper="http://java.sun.com/jsf/composite/components"
xmlns:sec="http://www.springframework.org/security/tags">

...

    <p:inputText id="discountPercent" widgetVar="discountPercentVar" value="#{myBean.discountPercent}" required="#{editable}">
        <p:ajax listener="#{myBean.calculateDiscount()}" update="pricingFields" process="@widgetVar(dcDiscountPercentVar)" />
        <f:convertNumber maxFractionDigits="2" minFractionDigits="2"/>
        <o:validator validatorId="javax.faces.DoubleRange" minimum="#{myBean.minimumDiscount}" maximum="#{myBean.maximumDiscount}" message="#{of:format2(msg.error_discount, myBean.minimumDiscount, myBean.maximumDiscount)}" />
    </p:inputText>

    ...

    <!-- Pricing Tree -->
    <p:treeTable id="totals" var="node" value="#{myBean.pricingTree}" sortBy="#{node.UIName}">
        <p:column headerText="#{msg.qPricingGrid_breakdown}">
            <h:outputText value="#{node.UIName}"/>
        </p:column>
        <p:column headerText="#{msg.qPricingGrid_quantity}" style="text-align:right">
            <casper:quantity-field class="delivery-units-column" value="#{node.deliveryUnits}"/>
        </p:column>
    </p:treeTable>

Alguma dica?

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 578


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>