Arquivo da categoria ‘JSF’
Publicado por Sergio Fantin em maio 16, 2011
Venho divulgar meu artigo sobre testes unitários em aplicações que utilizam a tecnologia JSF, presente na edição 91 da revista Java Magazine. São apresentadas, de maneira prática, as principais características do framework JSFUnit, e como sua utilização pode auxiliar o desenvolvedor na identificação de erros na aplicação. Além da parte teórica, o artigo apresenta um projeto que pode ser baixado no site da revista.
Artigos desta edição:
Obrigado ao Eduardo Spínola, editor da Java Magazine, pelo convite!
Enviado em Artigo, Framework, JSF, JSFUnit, Maven | Deixar um comentário »
Publicado por Sergio Fantin em julho 14, 2010
RichFaces é uma biblioteca de componentes para aplicações que utilizam JSF. Uma das suas características mais poderosas é o uso embutido do AJAX em seus componentes, assim o desenvolvedor não precisa se preocupar em reiventar a roda criando funções JavaScript. De maneira simples podemos utilizar vários componentes complexos apenas inserindo-os em nossa aplicação.
Uma característica bem bacana é o suporte a skins que deixam a interface da aplicação padronizada.
Neste post irei demonstrar como modificar a skin do RichFaces em tempo de execução.
Estrutura do Projeto

Bean.java
public class Bean implements Serializable {
private static final long serialVersionUID = -6042519587796329117L;
private String skin;
public String getSkin() {
return skin;
}
public void setSkin(String skin) {
this.skin = skin;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>jsf</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<context-param>
<param-name>org.ajax4jsf.SKIN</param-name>
<param-value>#{bean.skin}</param-value>
</context-param>
<filter>
<display-name>Ajax4jsf Filter</display-name>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
</web-app>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>br.com.serjaum.mb.Bean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>skin</property-name>
<value>blueSky</value>
</managed-property>
</managed-bean>
</faces-config>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.org/rich"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Modificando RichFaces skin em runtime...</title>
</head>
<body>
<f:view>
<h:form>
<rich:panel header="Skin: #{bean.skin}" style="width: 300px">
<h:panelGrid columns="2">
<h:outputLabel value="Escolha " />
<h:selectOneMenu value="#{bean.skin}" onchange="submit()">
<f:selectItem itemLabel="emeraldTown" itemValue="emeraldTown" />
<f:selectItem itemLabel="blueSky" itemValue="blueSky" />
<f:selectItem itemLabel="ruby" itemValue="ruby" />
<f:selectItem itemLabel="classic" itemValue="classic" />
<f:selectItem itemLabel="deepMarine" itemValue="deepMarine" />
</h:selectOneMenu>
</h:panelGrid>
</rich:panel>
</h:form>
</f:view>
</body>
</html>
Importando o projeto
- Baixe o projeto completo >>aqui<<;
- Descompacte o projeto no seu workspace;
- No Eclipse vá em: File –> Import –> General – Existing Projects into Workspace –> Next –> Selecione o projeto descompactado no workspace –> Finish.
Resultado



Até o próximo post!
Enviado em Java, JSF | 1 Comentário »
Publicado por Sergio Fantin em junho 25, 2010
Neste post irei demonstrar como agrupar elementos utilizando SelectItemGroup em componentes do tipo <h:selectOneMenu>.
Criei um projeto bem simples pra ilustrar o funcionamento do combo que poderá ser melhorado dependendo da necessidade.
Disponibilizei o projeto para download no fim do post.

Estrutura do projeto
Leia o resto deste post »
Enviado em Eclipse, Java, JSF | Deixar um comentário »
Publicado por Sergio Fantin em junho 23, 2010
Acaba de ser lançada a nova release da IDE mais popular para o desenvolvimento de código Java denominada Eclipse Helios. A IDE é liberada sob a Eclipse Public License e já se encontra disponível para download.
A plataforma pra desenvolvimento web conhecida como WTP vem agora com suporte a JSF 2, Servlet 3 e Tomcat 7, além de debugger JavaScript em tempo de execução.
Outra característica nova é a Eclipse MarketPlace Client que provê uma maneira facilitada para a procura e instalação de novos plugins.

Novas features
- Eclipse Communication Framework (ECF)
- Java Devlopment Tools (JDT)
- Javaserver Faces (JSF) Tools
- PHP Devlopment Tools (PDT)
- Rich Ajax Platform (RAP)
Bons códigos!
Enviado em Eclipse, Java, JSF, JUnit | Deixar um comentário »
Publicado por Sergio Fantin em maio 15, 2010
Neste post irei demonstrar a utilização do componente <t:selectItems>, que é componente responsável por popular os dados no componente <h:selectOneMenu>.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.5.2
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- Tomahawk 1.1.8
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, JUnit, MySQL | 1 Comentário »
Publicado por Sergio Fantin em maio 15, 2010
Neste post irei demonstrar a utilização do componente <f:selectItems>, que é componente responsávelpor popular os dados no componente <h:selectOneMenu>.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.5.2
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Leia o resto deste post »
Enviado em Hibernate, Java, JSF, JUnit, MySQL | 5 Comentários »
Publicado por Sergio Fantin em maio 2, 2010
Ultimamente tenho percebido na lista JavaSF a dificuldade entre os desenvolvedores JSF iniciantes em validar dois campos contendo datas onde a data inicial deve ser menor que a data final.
Neste post irei demonstrar como utilizar um validador no Managed Bean sem a necessidade de registrá-lo no faces-config.xml.
Estrutura do projeto

Códigos
MB.java
public class MB {
private Date dataInicio;
private Date dataFim;
public void validateBeginDate(FacesContext context, UIComponent component, Object value) {
dataInicio = (Date) value;
}
public void validateEndDate(FacesContext context, UIComponent component, Object value) {
dataFim = (Date) value;
if (! dataFim.after(dataInicio)) {
throw new ValidatorException(new FacesMessage(“Data final maior que data inicial”));
} else {
throw new ValidatorException(new FacesMessage(“Datas OK”));
}
}
}
Leia o resto deste post »
Enviado em Java, JSF | 1 Comentário »
Publicado por Sergio Fantin em setembro 15, 2009
Neste post irei demonstrar a utilização do componente rich:editor que faz parte da biblioteca de componentes RichFaces.
O rich:editor é um componente usado para a criação de um editor em páginas. Seu uso é relativamente simples e o resultado é impressionante.
A aplicação consiste num cadastro de Rascunhos onde o usuário poderá cadastrar e remover seus rascunhos de uma forma prática e simples. Para gerenciar as sessões/transações do Hibernate criei um serlvet filter Open Session In View fazendo papel de um interceptador, que será executado a cada request e response.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.4.1
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Códigos
Rascunho.java:
package br.com.serjaum.modelo;
@Entity
@Table(name="rascunho")
public class Rascunho implements Serializable{
private static final long serialVersionUID = -6142163109498247473L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="RASCUNHO_ID")
private Long id;
@Column(name="titulo")
private String titulo;
@Temporal(TemporalType.DATE)
@Column(name="data")
private Date data = new Date();
@Lob
@Column(name="conteudo")
private String conteudo;
...
}
Leia o resto deste post »
Enviado em Facelets, Framework, Hibernate, Java, JSF, JUnit, MySQL | 5 Comentários »
Publicado por Sergio Fantin em setembro 3, 2009
Neste post irei fazer a migração da nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática para Facelets.
Algumas das características do Facelets:
- Utilização do XHTML como camada de visão da aplicação;
- Permite a criação de componentes reutilizáveis;
- Aumenta a performance da aplicação de 30% até 50% comparado com JSP, pois não usa a compilação para servlet;
- Criação simplificada de templates;
- Uso de código JSF em tags HTML com o atributo jsfc (não é muito recomendado);
- Camada de visão padrão para o JSF 2.0;
Mais informações >>aqui<<.
Versões utilizadas
- Eclipse 3.4.1
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- JUnit 4.5
- Caelum Stella 1.2
Estrutura do projeto

Leia o resto deste post »
Enviado em Facelets, Framework, Hibernate, Java, JSF, JUnit, MySQL | 21 Comentários »
Publicado por Sergio Fantin em agosto 31, 2009
Neste post irei mostrar um exemplo prático de criptografia MD5 para aplicações JSF.
A API Java implementa dois algoritmos de Message Digest: o MD5 e o SHA-1. O algoritmo MD5 é um algoritmo de hash de 128 bits unidirecional, por isso ele não pode ser transformado na mesma string que foi usada para gerar o código criptografado. Utilizarei a classe java.security.MessageDigest para implementar a aplicação proposta.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.5.0
- JDK 1.6
-
- MyFaces 1.2.5
- RichFaces 3.3.1
Códigos
TransformaStringMD5.java:
package br.com.serjaum.util;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class TransformaStringMD5 {
public static String md5(String senha) {
String sen = "";
MessageDigest md = null;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
BigInteger hash = new BigInteger(1, md.digest(senha.getBytes()));
sen = hash.toString(16);
return sen;
}
}
Leia o resto deste post »
Enviado em Framework, Java, JSF | 7 Comentários »