Pergunta

Estou tentando usar juntos os três frameworks:PrimeFaces, PrimeFaces Mobile e MyFaces ExtVal.As versões da biblioteca são:PF 3.3.1, PF Mobile 0.9.3, MyFaces ExtVal 2.0.5.Considere o seguinte código:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
    <f:view>
        <h:head>
            <meta charset="UTF-8" />
            <title>Primefaces Mobile test</title>
        </h:head>
        <h:body>
            <h:form>
                <p:commandButton value="Oi" />
            </h:form>
        </h:body>
    </f:view>
</html>

Se o projeto tiver apenas jars PrimeFaces e Mobile, o commandButton renderizado será o esperado:

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;" type="submit"><span class="ui-button-text">Oi</span></button>

Este é o renderizador padrão do PrimeFaces.Se eu configurar f:view com renderKitId como PRIMEFACES_MOBILE, o botão renderizado será:

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" type="submit" data-iconpos="left" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;">Oi</button>

Também está tudo bem, como esperado.Agora, adicionando jars MyFaces ExtVal, tudo quebra e apenas PRIMEFACES_MOBILE é o renderizador dos componentes.Para testar o comportamento, adicionei os jars:myfaces-extval-bean-validation-2.0.5.jar, myfaces-extval-core-2.0.5.jar e myfaces-extval-property-validation-2.0.5.jar.Então removi o renderKitId, para que a biblioteca padrão PrimeFaces fosse usada, mas novamente o resultado é:

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" type="submit" data-iconpos="left" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;">Oi</button>

Tentei forçar o renderKitId em f:view para HTML_BASIC, mas ele continua renderizando a versão PrimeFaces Mobile do commandButton.

Então pessoal, vocês têm alguma sugestão?Antes da definição do RenderKitId, meu sistema estava OK, quando atualizei as bibliotecas recebi este erro.eu postei em Fórum PrimeFaces, mas não consegui ver uma maneira de resolver e não consigo entender por que isso está acontecendo.

Foi útil?

Solução

Para aqueles que enfrentam o mesmo erro que estou tendo, esse problema é específico da maneira como o MyFaces EXTVAL estava trabalhando com os ids do renderkit.Hoje, com a ajuda do @Howard vi uma nova correção do pessoal do EXTVAL que resolveu o problema.

Para ver mais informações:https://issues.apache.org/jira/browse/EXTVAL-151 http://forum.primefaces.org/viewtopic.php?p=90933#p90933

Gostaria de agradecer a @Howard pelo suporte desde o ano passado e à equipe MyFaces EXTVAL pela correção.Cumprimentos.

Outras dicas

@Fernando, acabei de relatar um problema semelhante que tive com OmniFaces, MyFaces JAR e PrimeFaces Mobile JAR.OmniFaces corrigiu e disse o seguinte:

Comentário 4 por membro do projeto balusc, Hoje (4 horas atrás) Em MyFaces, o ID do kit de renderização é definido durante a criação do modo de exibição (e no Mojarra durante a criação do modo de exibição).Portanto, a visualização temporária não tinha o ID do kit de renderização correto.

Isso foi corrigido: ver código fonte

Isso também pode resolver o seu problema.Está disponível no OmniFaces 1.3.Adicione o JAR ao seu classpath, teste novamente e responda com os resultados do teste.Não creio que seja necessário fazer alterações em seu web.xml ou faces-config.xml.Se não me engano, OmniFaces tem um PartialViewContext chamado OmniPartialView(Context), mas pode ser necessário adicionar FullAjaxExceptionHandler do OmniFaces a faces-config.xml, e isso pode resolver esse problema para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top