Marcos Sousa’s Blog

Blog sobre desenvolvimento de software
  • rss
  • Home
  • Sobre

Jboss Seam – Getting started: Page Actions!

Marcos Sousa | March 1, 2008

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!

Categories
Java, Java Server Faces, Jboss Seam
Tags
GET, Java, Java Server Faces, Jboss Seam, JSF, Page Actions
Comments rss
Comments rss
Trackback
Trackback

« Adobe lança Flex Builder Free para Universidades e Estudantes J2EE Spider: Rad brasileiro para Web! »

6 Responses to “Jboss Seam – Getting started: Page Actions!”

  1. Matt says:
    April 8, 2008 at 2:36 pm

    Olá,
    Tenho uma duvida em relação a page.xml… Como ficaria se usasse um commandLink com um outcome no action=”alterar”
    e através do *.page.xml enviar um objeto anotado com @DataModelSelection, para uma pagina “alterar.xhtml” ??
    Esse exemplo seria para que, ao clicar em uma linha no datatable, redirecionasse para um pagina alterar.xhtml com o objeto daquela linha selecionada.

    Grato

    Reply
  2. marcossousa says:
    April 8, 2008 at 5:49 pm

    Olá Matt,

    bom há duas formas de você fazer esta edição:
    Primeira usando @DataModel e @DataModelSelection, e commandlink/commandbutton que injeta o objeto corespondente a linha selecionanda antes de executar a ação.

    A segunda é usando um s:link/h:outputlink e s:button passando o identificador como parâmetro e recuperando o parâmetro via page action.

    Reply
  3. Daniel says:
    November 19, 2008 at 5:50 pm

    Como eu faço para configurar um projeto SEAM para funcionar apenas com chamadas POST ao invés de GET?

    Desde já agradeço,
    Daniel

    Reply
  4. Marcos Sousa says:
    November 20, 2008 at 7:27 am

    Olá Daneiel,

    É bem simples, basta você não usar os recursos de page actions, que o JSF já é só POST por padrão. Se desejar só controle navegação e o escopo de conversação.

    Reply
  5. Robert says:
    October 1, 2009 at 12:34 pm

    Opa Marcos! Acho que me deparei com um bug relacionado a page actions. Configurei o mapeamento do servlet faces para “/faces/*” ao invés de “*.seam”. O seam não interpreta os arquivos no formato (View ID).page.xml, interpretando somente o pages.xml dentro do WEB-INF. Já fez esse teste?

    Reply
  6. Marcos Sousa says:
    October 1, 2009 at 2:22 pm

    Oi Robert,

    Eu nunca tinha visto este problema, vou até olhar! Valeu :)

    Reply

Leave a Reply

Click here to cancel reply.

Núvens de tags

Agile Eventos Facelets GET Hibernate incompatiblidades Itext Java Java EE Java Magazine Java Server Faces JavaServer Faces Java Vídeo Magazine Jboss jboss-seam-itext Jboss Developer Studio Jboss Seam JDBC type: 7 JPA JSF linux mare marébh maré de agilidade Microsoft No Dialect mapping for JDBC type: 7 Page Actions PostGreSQL RHDS rich:fileUpload RichFaces Rich Faces RichFaces 3.2 Scrum Seam-gen Seam Framework Seam PDF Spring Spring Framework TDD URL Rewrite URL User Friendly Variable Resolver Vídeo Aula XP

Meus últimos tweets

  • Aos participantes do Bhjs que gostariam de vir para a Globo.com, segue as outras vagas http://t.co/KjBinf4x #bhjs #beagajs 1 week ago
  • Se você precisa buscar dado no disco, prefira assíncrona @luciano #bhjs #beagajs http://t.co/5gCHp7P8 2 weeks ago
  • @DouglasAguiar @HerberthAmaral Porque na copa? 2 weeks ago
  • Slides da palestra 'Indo além com jQuery' #bhjs #beagajs http://t.co/wHbhaI75 2 weeks ago
  • @araujolucas na parte da frente a temperatura está melhor 2 weeks ago
  • Começando a palestra do @cmilfont no #bhjs #beagajs http://t.co/9DZt7MQj 2 weeks ago
  • @isaias_barroso @DeivissonBruno @cmilfont gula ao extremo:) 2 weeks ago
  • Palestra com insights do desenvolvimento do paparazzo #gcom #bhjs #beagajs http://t.co/7igVbtmS 2 weeks ago
  • @flavio1110 energético? 2 weeks ago
  • Alguém indo do Aeroporto de Confins para centro/guitierrez por voltar de 12:00 #bhjs #beagajs 2 weeks ago

Anúcios

Categorias

  • .net
  • Agile
  • Agile Conference 2009
  • Artigos
  • Atualidades
  • c++
  • cinema
  • Django
  • DRY
  • Eventos
  • Flex
  • Formula 1
  • Hibernate
  • IDE
  • Inutilidades
  • Java
  • Java EE
  • Java Server Faces
  • Jboss Seam
  • linux
  • Mac OS
  • Microsoft
  • Open-source
  • Palestras
  • Python
  • RAD
  • RIA
  • RichFaces
  • Scrum
  • Software Livre
  • Spring
  • Spring Annotations
  • TDD
  • Testes
  • Uncategorized
  • Vídeo Aulas

Links recomendados

  • AJ Soluções
  • Ary Júnior
  • Erko Bridee
  • Fragmental
  • Fragmental TW
  • Guilherme Chapiewski
  • Handerson Frota
  • Jeveaux
  • Juliano Carniel
  • Onipresente
  • Passes de Letra
  • PortalJava.com
  • Rafael Carneiro
  • Rafael Pontes

DevMedia Post’s

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox