Mostrando postagens com marcador jsf. Mostrar todas as postagens
Mostrando postagens com marcador jsf. Mostrar todas as postagens

sexta-feira, 26 de julho de 2013

Limpar conteúdo de componentes jsf

/**
 * Limpa os dados dos componentes de edição e de seus filhos,
 * recursivamente. Checa se o componente é instância de 
 * EditableValueHolder e 'reinicia' suas propriedades.
 */
public void cleanSubmittedValues(UIComponent component) {
    if (component instanceof EditableValueHolder) {
        EditableValueHolder evh = (EditableValueHolder) component;
            evh.setSubmittedValue(null);
            evh.setValue(null);
            evh.setLocalValueSet(false);
            evh.setValid(true);
        }
        if(component.getChildCount()>0){
            for (UIComponent child : component.getChildren()) {
                cleanSubmittedValues(child);
            }
        }
    }
}

Fonte: https://github.com/rponte/jsf-loja-project/blob/master/src/br/com/triadworks/loja/util/FacesUtils.java#L58

quarta-feira, 12 de junho de 2013

Desabilitar a validação do JSF2 para partial submit

<f:metadata>
     <f:event listener="#{control.bindValue}" type="preValidate"/>
<f:metadata>


@Component
public class FormularioControl {
        
    public void bindValue(ComponentSystemEvent evento) {
        evento.getComponent().processUpdates(FacesContext.getCurrentInstance());
        validaCampos();
    }

}

segunda-feira, 7 de janeiro de 2013

WARNING: Parameters: Invalid chunk ignored"

Esse warning ocorre quando o formulário enviado possui campos não identificados

exemplo de post que gera este problema

  1. j_idt108:j_idt168:0:j_idt171:0:quantidade:10
  2. :
  3. j_idt108:j_idt168:0:j_idt171:1:quantidade:10
  4. :
Ao analizar o submit com uma ferramenta de profile pude encontrar esta divergência no form.

A causa deste problema foi:
em uma página jsf possuía um formulário


< h:form >
quantidade: < h:inputtext id="quantidade" >< /h:inputtext >
comentario: < textArea >< /textArea >

< /h:form >



Havia colocado o textarea somente para teste de layout, porém como ele está dentro do formulário, durante uma requisição ajax ele é submetido, o que gera o warning

WARNING: Parameters: Invalid chunk ignored"

para cada tag não jsf.

para resolver isso somente substitui o textArea por


< h:form >
quantidade: < h:inputtext id="quantidade" >< /h:inputtext >
comentario: < h:inputtextarea id="comentatio" >< /h:inputtextarea >

< /h:form >



O que gerou o seguinte post

  1. j_idt108:j_idt168:0:j_idt171:0:quantidade:10
  2. j_idt108:j_idt168:0:j_idt171:0:comentatio:
  3. j_idt108:j_idt168:0:j_idt171:1:quantidade:10
  4. j_idt108:j_idt168:0:j_idt171:0:comentario:

Que resolveu o problema

quinta-feira, 20 de setembro de 2012

Inclusão de parâmetros em componentes JSF

Para incluir parametros em um componente jsp, e resgatá-los em um listener basta

<h:inputText>
      <f:attribute id="indiceBuscaProdutoItensValores" name="indice" value="#{itensValoresStatus.index}"/>
</ice:inputText>

e para resgatar o valor no java


public void textChangeListener(TextChangeEvent event){
       ...
       Integer index = (Integer) event.getComponent().getAttributes().get("indice");
       ...
}

o importante é que o nome do atributo não seja uma palavra reservada neste caso anteriormente usei index e não conseguia recuperar o valor, então recomendo que seja utilizado nomes em português que não tem erro.


terça-feira, 28 de agosto de 2012

<ace:dateTimeEntry/> Correção do problema do componente

Correção do problema do componente


ice.onAfterUpdate( function (){
    var calendars = $('.hasDatepicker');
    if (calendars){
        ice.ace.jq.datepicker.initialized = false;
    }
});


jQuery(function($){
    ice.onBeforeUpdate( function (){
        ice.ace.jq.datepicker.initialized = false;
    });
}