[Duvida] Como limpar os campos de um modal panel com RichFaces?

2 respostas
GabrielCardelli

Opa pessoal? beleza?

Estou com um problema, tentei algumas soluções mais não consegui fazer,

estou estudando o RichFaces e não estou conseguindo limpar o meu form quando ele é fechado:

Pagina:

<%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
<%@taglib uri="http://java.sun.com/jsf/core"  prefix="f"%> 
<%@taglib uri="http://richfaces.org/rich"     prefix="rich" %>
<%@taglib uri="http://richfaces.org/a4j"      prefix="a4j" %>
    
<html>
<body>    
<f:view>
    <rich:modalPanel id="panel" width="500" height="500">
        <f:facet name="header">
            <h:panelGroup>
                <h:outputText value="Cadastar Usuário"></h:outputText>
            </h:panelGroup>
        </f:facet>
        
        <f:facet name="controls">
            <h:panelGroup>
                <h:graphicImage value="/images/modal/close.png" styleClass="hidelink" id="hidelink"/>
                <rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick"/>
            </h:panelGroup>
        
        </f:facet>
        <h:form>
        <table>
        <tr>
            <td>
                 <h:outputText value="Nome: "></h:outputText>
            </td>
            <td>
                 <h:inputText id="nome" value="#{UserManaged.user.name}">
                     <rich:ajaxValidator event="onkeydown"></rich:ajaxValidator>
                 </h:inputText>
            </td>
            
            <td>
                 <rich:message for="nome"></rich:message>
            </td>
        </tr>
        
        <tr>
            <td>
                 <h:outputText value="Sobrenome: ">                 
                 </h:outputText>
            </td>
            <td>
                 <h:inputText required="true" requiredMessage="Valor Obrigatório." id="sobrenome" value="#{UserManaged.user.sobrenome}">    
                     <rich:ajaxValidator event="onblur"></rich:ajaxValidator>
                 </h:inputText>
            </td>
            <td>
                <rich:message for="sobrenome"></rich:message>
            </td>
        </tr>
        
        
        
        &lt;/table&gt;<br>
        &lt;table width="100%"&gt;
            &lt;tr&gt;
                &lt;td align="center"&gt;&lt;a4j:commandButton value="Cadastrar Usuário"&gt;&lt;/a4j:commandButton&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
        &lt;/h:form&gt;
    &lt;/rich:modalPanel&gt;

    &lt;h:outputLink value="#" id="link" onclick="#{UserManaged.clean()}"&gt;
        Cadastrar Cliente 
        &lt;a4j:support action="onclick" reRender="nome"&gt;&lt;/a4j:support&gt;
        &lt;a4j:support action="onclick" reRender="sobrenome"&gt;&lt;/a4j:support&gt;
        &lt;rich:componentControl for="panel" attachTo="link" operation="show" event="onclick" /&gt;
    &lt;/h:outputLink&gt;
    
    
&lt;/f:view&gt;
&lt;/body&gt;    
&lt;/html&gt;

ManagedBean:

package manageds;

import beans.User;

public class UserManaged {
	
	private User user = new User();

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	public String clean(){
		user = new User();
		return "clean";
	}

}

Por que meus componentes não renderizam? Está faltando algo?
Abraço, obrigado desde já.

2 Respostas

renanreismartins

amigo seu outpulink tem o atributo onclick, nele voce pode adicionar apenas codigo javascript, para executar um metodo java, utilize o atributo action.

e no seu caso ainda acho mais prudente trocar o h:outputlink para a4j:commandLink

abrasss

GabrielCardelli

Opa mano obrg pelo ajuda, está sendo muito util.

Quando uso as tags do a4j elas não executam as inner tags rich

como h: as rich são executadas:

Mais ocorre um refresh na pagina e eu qria que não desse.

Segue abaixo minha jsp:

&lt;%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %&gt;
&lt;%@taglib uri="http://java.sun.com/jsf/html"  prefix="h" %&gt;
&lt;%@taglib uri="http://java.sun.com/jsf/core"  prefix="f"%&gt; 
&lt;%@taglib uri="http://richfaces.org/rich"     prefix="rich" %&gt;
&lt;%@taglib uri="http://richfaces.org/a4j"      prefix="a4j" %&gt;
    
&lt;html&gt;
&lt;body&gt;    
&lt;f:view&gt;
&lt;a4j:loadScript src="/resources/jquery.maskedinput-1.2.2.js" /&gt; 
&lt;rich:jQuery selector="#cpf" query="mask('[CPF removido]')" timing="onload" /&gt; 
    &lt;rich:modalPanel id="panel" width="500" height="500"&gt;
        &lt;f:facet name="header"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:outputText value="Cadastar Usuário"&gt;&lt;/h:outputText&gt;
            &lt;/h:panelGroup&gt;
        &lt;/f:facet&gt;
        
        &lt;f:facet name="controls"&gt;
            &lt;h:panelGroup&gt;
                &lt;h:graphicImage value="/images/modal/close.png" styleClass="hidelink" id="hidelink"&gt;
                &lt;/h:graphicImage&gt;
                &lt;rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick"/&gt;
            &lt;/h:panelGroup&gt;
        
        &lt;/f:facet&gt;
        &lt;h:form&gt;
        &lt;table&gt;
        &lt;tr&gt;
            &lt;td&gt;
                 &lt;h:outputText value="Nome: "&gt;&lt;/h:outputText&gt;
            &lt;/td&gt;
            &lt;td&gt;
                 &lt;h:inputText id="nome" value="#{UserManaged.user.name}"&gt;
                     &lt;rich:ajaxValidator event="onkeydown"&gt;&lt;/rich:ajaxValidator&gt;
                 &lt;/h:inputText&gt;
            &lt;/td&gt;
            
            &lt;td&gt;
                 &lt;rich:message for="nome"&gt;&lt;/rich:message&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        
        &lt;tr&gt;
            &lt;td&gt;
                 &lt;h:outputText value="Sobrenome: "&gt;                 
                 &lt;/h:outputText&gt;
            &lt;/td&gt;
            &lt;td&gt;
                 &lt;h:inputText required="true" requiredMessage="Valor Obrigatório." id="sobrenome" value="#{UserManaged.user.sobrenome}"&gt;    
                     &lt;rich:ajaxValidator event="onblur"&gt;&lt;/rich:ajaxValidator&gt;
                 &lt;/h:inputText&gt;
            &lt;/td&gt;
            &lt;td&gt;
                &lt;rich:message for="sobrenome"&gt;&lt;/rich:message&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        
        &lt;tr&gt;
            &lt;td&gt;
                 &lt;h:outputText value="CPF: "&gt;                 
                 &lt;/h:outputText&gt;
            &lt;/td&gt;
            &lt;td&gt;
                 &lt;h:inputText required="true" requiredMessage="Valor Obrigatório." id="cpf" value="#{UserManaged.user.cpf}"&gt;    
                     &lt;f:converter converterId="cpfConverter"/&gt;
                     &lt;f:validator validatorId="cpfValidator"/&gt; 
                     &lt;rich:ajaxValidator event="onblur"&gt;&lt;/rich:ajaxValidator&gt;
                 &lt;/h:inputText&gt;
            &lt;/td&gt;
            &lt;td&gt;
                &lt;rich:message for="cpf"&gt;&lt;/rich:message&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        
        
        
        &lt;/table&gt;<br>
        &lt;table width="100%"&gt;
            &lt;tr&gt;
                &lt;td align="center"&gt;
                
                &lt;!-- Se eu colocar &lt;a4j:&gt; aqui, não esconde o componente!!  --&gt;
                &lt;h:commandButton value="Cadastrar Usuário" action="#{UserManaged.addUser()}"&gt;
                    &lt;rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick"/&gt;
                &lt;/h:commandButton&gt;
                &lt;/td&gt;
            &lt;/tr&gt;
        &lt;/table&gt;
        &lt;/h:form&gt;
    &lt;/rich:modalPanel&gt;
    &lt;h:form&gt;
    
    &lt;!-- Aqui o &lt;a4j:&gt; aqui não está limpando meus atributos, dentro do metodo clean eu dou um new User() e tento reRenderizar mais não funciona  --&gt;
    &lt;a4j:commandLink value="#" id="link" action="#{UserManaged.clean()}"&gt;
        Cadastrar Cliente 
        &lt;a4j:support event="onclick" reRender="nome"&gt;&lt;/a4j:support&gt;
        &lt;a4j:support event="onclick" reRender="sobrenome"&gt;&lt;/a4j:support&gt;
        &lt;rich:componentControl for="panel" attachTo="link" operation="show" event="onclick" /&gt;
    &lt;/a4j:commandLink&gt;
    &lt;/h:form&gt;
    
    &lt;rich:panel header="Usuários"&gt;
        &lt;h:dataTable var="u" value="#{UserManaged.lista}" width="50%"&gt;
        
        &lt;h:column&gt;
        &lt;f:facet name="header"&gt;
           &lt;h:outputText value="Nome"&gt;&lt;/h:outputText&gt;
        &lt;/f:facet&gt;
           &lt;h:outputText value="#{u.name}"&gt;&lt;/h:outputText&gt;
        &lt;/h:column&gt;

        &lt;h:column&gt;
        &lt;f:facet name="header"&gt;
           &lt;h:outputText value="Sobrenome"&gt;&lt;/h:outputText&gt;
        &lt;/f:facet&gt;
           &lt;h:outputText value="#{u.sobrenome}"&gt;&lt;/h:outputText&gt;
        &lt;/h:column&gt;
        
        &lt;h:column&gt;
        &lt;f:facet name="header"&gt;
           &lt;h:outputText value="CPF"&gt;&lt;/h:outputText&gt;
        &lt;/f:facet&gt;
           &lt;h:outputText value="#{u.cpf}"&gt;
           
           		&lt;f:converter converterId="cpfConverter"/&gt;
           
           &lt;/h:outputText&gt;
        &lt;/h:column&gt;
        
        &lt;/h:dataTable&gt;
        
    &lt;/rich:panel&gt;
    
    
    
&lt;/f:view&gt;
&lt;/body&gt;    
&lt;/html&gt;

Comentei ela onde ocorrem os problemas são nos links para submeter. (Linhas 83 e 94)
Se alguem puder me ajudar.

Não estou entendo porque quando eu clico no botão Cadastrar, a pagina da um reload.
Quem puder ajudar agradeço.

Abraço pessoal. boa noite.

Criado 6 de agosto de 2010
Ultima resposta 6 de ago. de 2010
Respostas 2
Participantes 2