Galera, eu preciso chamar esse método para limpar a árvore de componentes, como poderia fazer ?
public static void cleanSubmittedValues(UIComponent component){
Uma pessoa me disse pra utilizar o <f:attribute /> mas sinceramente não tenho ideia de como fazer …
Caso seu objetivo seja limpar os dados do formulário, dê uma olhada no primefaces-extensions, eles já tem um componente para isso, onde se passa o id do componente:
Certo, eu preciso limpar vários inputs dentro de um form, eu deveria passar o id do form ? seria isso ?
Esse primeextensio é possivel usar com o primefaces ?
Cara, eu baixei o War do projeto e peguei o Jar, porém ele não me deixa registrar o Jar no ClassPath, seria algo relacionado a versão do Prime ? Pois uso a 3.0.1, teria algo haver ? Já que no projeto estão usando o 3.2
Esse link do Rafael P. li bastante ontem, por isso não entendi como passar um Componente como parâmetro …
Mas enfim … olha só o problema que estou tendo ao tentar add o Jar ao ClassPath :
Could not write file: C:\Documents and Settings\FISCAL\workspace\Contabilidade\.classpath.
C:\Documents and Settings\FISCAL\workspace\Contabilidade\.classpath (Acesso negado)
Na verdade eu crio outro objeto qdo chamo o botão Limpar, mas o form não é limpo, então no site do R.Pontes fui um posto sobre Limpar árvore de componentes, porém não sei como implementar isso no meu projeto.
if (component instanceof EditableValueHolder) {
EditableValueHolder evh = (EditableValueHolder) component;
evh.setSubmittedValue(null);
evh.setValue(null);
evh.setLocalValueSet(false);
evh.setValid(true);
}
// Dependendo de como se implementa um Composite Component, ele retorna ZERO
// na busca por filhos. Nesse caso devemos iterar sobre os componentes que o
// compõe de forma diferente.
if(UIComponent.isCompositeComponent(component)) {
Iterator i = component.getFacetsAndChildren();
while(i.hasNext()) {
UIComponent comp = (UIComponent) i.next();
//TODO: isolar em um método?
if (comp.getChildCount() > 0) {
for (UIComponent child : comp.getChildren()) {
cleanSubmittedValues(child);
}
}
}
}[/code]
private UIForm form = new UIForm();
public void actionListar(){
limparCampos();
if(form !=null) Util.cleanSubmittedValues(form);
}
Explicando:
Tenho o form como binding, e quando clico no botão voltar eu limpo o objeto e chamo o .cleanSubmittedValues para limpar a árvore de componentes!
Estanho, atribuir os valores default era para resolver o problema, mas acredito que seja em função da presença do atributo immediate=“true” no seu botão.
Blz, desconfiei do immediate=“true” apenas por ele agir diretamente na fase PROCESS VALIDATE do clico de vida do JSF.
Dessa forma pode inibir os valores que serão processados no RESTORE VIEW.
Acho que vale a pena testar sem o atributo só por desencargo de consciência. hehe
Galera, mais uma vez com a ajuda de vcs consegui resolver mais um problema, bem acabei que não precisei limpar a Árvore, então basicamente ficou apenas assim: