Leia o artigo anterior
*
Aê, pessoal! Nesse artigo veremos algumas funcionalidade com JSF. Vamos criar uma newsletter com o recurso de campos required onde não serão permitidos campos vazios. Para não ficar um texto muito grande, não envolvi armazenar os dados em BD usando JSF.
Lets go...
Primeiramente crie um projeto no seu Netbeans e chame esse de Newsletter.
Clique em next e diga que vai usar o JavaServer Face como framework.

Agora vamos criar nossa classe JavaBean. Então, clique com o botão direito no projeto e escolha Java Class e dê o nome NewsletterBean, e no package coloque br.news.bean

Em seguida temos um método que vai verificar (acao ()) o que foi digitado antes de "cadastrar" os dados em um possível BD. Esse método retorna uma String, pois a partir dessa string o JavaFaces toma as decisões.
public String acao(){
FacesContext context = FacesContext.getCurrentInstance();
//verificar o que foi digitado
if(nome!=null && email !=null){
for(int i=0;i< email.length();i++){
char c = email.charAt(i);
if(!Character.isSpaceChar(c)){
String msg = "espaco em branco nao permitido";
FacesMessage message = new FacesMessage(msg);
context.addMessage("formulario", message);
sucesso = false;
break;
}
}
} else{
sucesso = false;
}
return (sucesso? "falha" : "sucesso");
}
}Crie um arquivo .jsp chamado sucesso.jsp e deixe conforme abaixo:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsf/core"prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<f:view>
E-mail <h:outputText value="#{news.email}"/><br/> cadastrado com sucesso!
</f:view>
</body>
</html>Mude o nome do arquivo welcomeJSP.jsp para index e deixe assim:
<body>
<f:view>
<h:outputText value="NewsLetter" />
<h:form id="formulario">
Digite seu nome:
<h:inputText id="nome" value="#{news.nome}" required="true"
requiredMessage="Campo nome é obrigatório" />
<h:message for="nome"/> <br/>
Digite seu email:
<h:inputText id="email" value="#{news.email}" required="true"
requiredMessage="Campo email é obrigatório" />
<h:message for="email"/>
<br/>
<h:commandButton action="#{news.acao}" value ="Enviar" id="submit"/>
</h:form>
</f:view>
</body>Abra agora o arquivo faces-config.xml no formato XML. Clique com o botão direito em qualquer local e escolha a opção conforme a imagem abaixo:

Na tela que abriu deixe conforme a imagem a seguir. Assim estamos configurando nosso arquivo para saber qual Bean chamar, bem semelhante como fazemos com o mapeamento usando Servlet.

Faça o mesmo procedimento do passo 10 e escolha Add navigation Rule e deixe como a imagem a seguir. Assim definimos quem será nossa página inicial.

Seu arquivo faces-config.xml deve estar semelhante a isso:
<managed-bean>
<managed-bean-name>news</managed-bean-name>
<managed-bean-class>br.news.bean.NewsLetter</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>sucesso</from-outcome>
<to-view-id>/sucesso.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>falha</from-outcome>
<to-view-id>/index.jsp</to-view-id>
</navigation-case>
</navigation-rule>Escolha o modo PageFlow e faça o link como na imagem a seguir. Não se esqueça de colocar o nome de cada case. Observe que em caso de falha, ele mantém a página e no caso de sucesso, ele vai para página sucesso.jsp

Agora teste sua aplicação, clique com o botão direito no projeto e em seguida escolha Run. Veja os testes que fiz:

Na próxima tela, altere a imagem como abaixo. Precisamos criar as variáveis que têm relação com os campos do formulário, então temos que criar a variável nome e email e permitir o acesso via get/set.


Abraço a todos e espero que tenham gostado!
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.