Vídeo Aula Jboss Seam: Seam Gen parte 2

Java, Java EE, Java Server Faces, Jboss Seam, RAD, Vídeo Aulas No Comments »

Foi publicada no portal Java Magazine a 9ª vídeo aula da série sobre JBoss Seam. Nesta vídeo aula eu mostrei como pode ser adicionados novos serviços dentro da aplicação gerada pelo Seam-Gen usando o Jboss Developer Studio.

Na vídeo aula foram criados métodos para cálculo de saldo de estoque e métodos para geração dos itens dos combos para Categorias, Produtos e Tipos de Movimentos. Na próxima parte será mostrada a criação de Conversores JSF usando as anotações do Seam. Vale a pena conferir!

Vídeo Aula

Vídeo Aula Jboss Seam: Seam Gen

Java, Java EE, Java Server Faces, Jboss Seam, RAD, Vídeo Aulas No Comments »

Foi publicada no portal Java Magazine a 8ª vídeo aula da série sobre JBoss Seam. Nesta vídeo aula eu mostrei como é gerada uma aplicação a partir do Seam-Gen usando o Jboss Developer Studio.

Na vídeo aula foi criada uma aplicação de controle de estoque com cadastros de categorias, produtos e de movimentações de estoque. Após a criação da aplicação fiz uma explicação da estrutura que foi gerada após executar e testar o que foi gerado.

Vídeo Aula

Jboss Seam - Getting started: Navigation Cases!

Java, Java EE, Java Server Faces, Jboss Seam No Comments »

No post Jboss Seam - Getting started: Page Actions, eu havia mostrado um caso simples de listagem e edição de notícias. Mas há casos exigem a criação casos de navegação para que não haja erros na execução.

Voltando ao exemplo de cadastro de notícias, o que aconteceria se o usuário por engano digitar um código que não existe na URL: /news/EditNews.jsf?newsId=9? Bom a página de edição apareceria com o formulário em branco ou geraria uma exceção.

A solução para este caso seria, caso o método gere um OUTCOME de erro, redireciona para a página de edição. Veja o exemplo:


<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.com/products/seam/pages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/pages
http://jboss.com/products/seam/pages-2.0.xsd">

<page view-id="/news/EditNews.xhtml">
<param name="newsId" value="#{newsBean.news.newsId}"/>
<action execute="#{newsBean.loadNewsById(newsBean.news.newsId)}"/>

<rule if-outcome="error">
<redirect view-id="/news/list.xhtml"/>
</rule>
</page>
</pages>

Assim, caso o identificador for nulo ou inválido a action loadNewsById retornará o outcome error. Assim, a execução será redirecionada a página lista.xhtml evitando que erros sejam gerados e evitando quebra de dados no formulário. Simples não?

Jboss Seam - Getting started: Page Actions!

Java, Java Server Faces, Jboss Seam 4 Comments »

Um dos grandes problemas que os desenvolvedores JSF tem é lidar basicamente com 2 situações relacionadas com GET: Passar parâmetros e executar ações via GET. Vou dar dois exemplos clássicos:
1° - Você tem um sistema de cadastro de notícias. Dentro deste sistema você tem uma página que faz a listagem das notícias cadastradas. Para listar estas notícias cadastradas assim que carregasse a página você tinha duas saídas: uma seria fazer o controle no método get de seu datatable:
- No Managed Bean


private List<News> newsList;
...
public List<News> getNewList() {
if (newsList == null) {
newsList = myService.listNews();
}
return newsList;
}

Na página seria algo:


<h:dataTable value="#{newBean.newsList}">
<!-- colunas da tabela -->
</h:dataTable>

A outra forma você teria que criar a ação de listagem e para acessar a página você teria que chamar a página de um componente jsf: um menu ou um botão que fizesse uma requisição post invocando a ação.

Usando o recurso de Page Actions do Jboss Seam você não precisa mais usar estas “soluções alternativas” para executar ações e passar parâmetros para um Managed Bean via GET. Dentro de seu projeto o Seam irá reconhecer todos arquivos xml que sigam o padrão: *.page.xml ou o arquivo pages.xml dentro da pasta WEB-INF. Veja um exemplo do arquivo:


<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.com/products/seam/pages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/pages
http://jboss.com/products/seam/pages-2.0.xsd">
<page view-id="/news/list.xhtml"
action="#{newsBean.listNews}"
conversation-required="false"/>

<page view-id="/news/EditNews.xhtml">
<param name="newsId" value="#{newsBean.news.newsId}"/>
<action execute="#{newsBean.loadNewsById(newsBean.news.newsId)}"
if="#{newsBean.news.newsId != null}"/>
</page>
</pages>

O código acima chama a ação JSF listNews antes de renderizar a página /news/list.jsf, que pode ser chamada via GET ou POST. O mesmo acontece para a edição de notícias /news/EditNews.jsf?newsId=9. Primeiro será vinculado o valor do parâmetro newsId com propriedade newsBean.news.newsId e após será chamada a ação loadNewsById que carrega a notícia recebendo como parâmetro o identificador da notícia.

Sem dúvida nenhuma o recurso de Page Actions é bem legal para se trabalhar com JSF. Vale a pena usar! Em breve mostrarei mais dicas de Page Actions!

WP Theme & Icons by N.Design Studio
Assine Assine os comentarios