Vídeo Aulas: Seam Extras partes 8 e 9

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

Foram publicadas no portal Java Magazine a 8ª e a 9ª parte da série de vídeo aulas sobre os extras Seam Framework.

A parte 8, faz a introdução do Seam Remoting. São mostradas as configurações necessárias e a forma de acesso a componentes SEAM. O Seam Remoting é uma forma eficiente acessar componentes SEAM usando AJAX, permitindo ao desenvolvedor resolver problemas que os componentes disponíveis no mercado não atendem. Para utilizá-lo é facil, basta apenas ter o SeamResourceServlet configurado e basta chamar os arquivos javascript ou usar a tag remote para usar os componentes, veja o exemplo:


<script type="text/javascript" src="seam/resource/remoting/resource/remote.js"></script>
<script type="text/javascript" src="seam/resource/remoting/interface.js?newsHome&amp;usersHome"></script>
<!-- Mesmo resultado em relação as 2 linhas anteriores-->
<s :remote include="newsHome,usersHome"/>

A parte 9 aborda uma feature interessante, a resolução de EL. Como uma expression language é resolvida durante a rendereização da página, para usar este recurso é preciso usar a função dentro fora da página em um arquivo Javascript. Depois é só chamar a função da seguinte forma:


Seam.Remoting.eval("#{newsHome.relatedNews}", newsCallback);
// callback function
function newsCallback(newsList) {
// read news
var area = document.getElementById("relatedNews");
for (var i = 0; i < newsList.length; i++) {
var news = newsList[i];
var span = document.createElement("span");
span.innerHTML = "<h4><a href='ViewNews.seam?newsId=" + news.getId() + "'>" +
news.getTitle() + "</a>" + news.getDescription();
area.appendChild(span);
}
}

A última vídeo aula da série mostrará chamadas em lote e a utilização de classes que não são componentes SEAM.

Parte 8
Parte 9

Arquivos Fontes

Seam 2.1 released!

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

Depois de algumas versões Beta e 2 candidatas a realease, o seam disponibilizou esta semana a versão 2.1 estável. Esta versão trás uma série de novos recursos, alguns deles muito interessantes como o módulo de gerenciamento de autenticação usando o modelo ACL de permissões e suporte a Wicket.

Para quem gera documentos excel, tenho uma boa notícia, agora facilmente será possível criar documentos XLS utilizando um módulo específico do Seam para isto. Integrado ao JExcelAPI, o módulo possibilita gerar planilhas com um simples documento XHTML de maneira bem semelhante ao geração de PDF, que já abordada anteriomente.

A criação de URL User Friendly agora tem suporte buit in ao URL Rewriter sem contar o suporte a JAX-RS através do suporte ao RESTeasy. A parte Core sofreu várias melhorias com melhor suporte a Cache e principalmente o suporte a chamadas simultâneas dentro de um mesmo escopo de conversação.

A melhoria da performance e escalabilidade terão destaque para o próximo release. A documentação para clustering está sendo preparada para usar juntamente com o Jboss Clustering. Há também rumores que nos próximos realeases o suporte ao OpenID já estará disponível.

Gere PDF de qualidade em 10 minutos

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

O Seam Framework tem um grande leque de extras, na minha opinião é onde o Seam mais se destaca. Possui integração com Hibernate, Spring, Groovy, EJB, GWT, Quartz, Java Mail e por aí vai! Bom hoje vou falar um pouco do suporte do seam para integração do iText.

Basicamente para usar em um projeto Seam, basta adicionar a lib do itext e a lib de intregração jboss-seam.jar. Feito isto, basta criar páginas xhtml que use as tags de geração de arquivos PDF. Uma das opções que mais me chamaram a atenção foi a possibilidade de adicionar código html, algo que estava procurando para impressão de campos que usam o formato RichText. Outra coisa que me chamou a atenção foi a velocidade, um mesmo PDF que era gerado usando iReports levou um bom tempo a mais do que o gerando usando o Seam. As opções básicas como cabeçalho, rodapé e quebra de página estão presentes.

Tudo que é preciso fazer é criar uma página xhtml usando a tag p:document com o namespace http://jboss.com/products/seam/pdf:


<p :document xmlns:p="http://jboss.com/products/seam/pdf">
  <!-- Coloque aqui o conteúdo do documento -->
</p>

A tag de paragraph permite a criação de parágrafos de forma semelhante ao um documento HTML, para exibir um dado de uma EL JSF há três maneiras básicas: Colocar a EL direto no texto, usar o componente JSF padrão h:outputText ou ainda usar o componente do Seam p:text. Veja o exemplo:


<p :paragraph>
    Olá #{user.name}, você foi registrado com sucesso, seu login é <h :outputText value="#{user.login}" /> e seu último acesso foi em: </p><p :text value="#{user.lastAcess}">
        <f :convertDateTime pattern="dd/MM/yyyy HH:mm" />
    </p>

E não podia deixar de destacar, também deixar de destacar a habilidade do Seam de renderizar código HTML através da tag p:html:


<p :html>
    <h1>Título 1 em html</h1>
    <table>
        <th>
              <td>Título 1</td>
              <td>Título 2</td>
        </th>
        <tr>
              <td>Linha 1</td>
              <td>Linha 1</td>
        </tr>
        <tr>
              <td>linha 2</td>
              <td>Linha 2</td>
        </tr>
    </table>
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
    </ul>
</p>

Caso se interesse pelo assunto, sugiro acessar o Guia de Referência.

Seam - Getting started: Converters!

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

Na série de vídeo-aulas que eu fiz para o portal DevMedia sobre o Seam Framework, eu mostrei como podem ser usadas as anotações para registro de Conversores JSF. A notação é bastante simples. Imagine que você tenha um cadastro de produtos.

Veja o código do conversor:


@Name("productConverter")
@BypassInterceptors
@Converter(forClass=Product.class)
public class ProductConverter implements javax.faces.convert.Converter{

public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
// Insira o código que transforme a string no objeto desejado (Product)
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
// Insira o código que transforme o objeto desejado (Product)    em String
}

}

Para registrar um conversor temos que usar as anotações:
@Name - Registra o conversor como um componente Seam
@BypassInterceptors - Indica que o conversor não deve sofrer ação dos intercetadores SEAM.
@Converter - Registra o conversor no contexto JSF, o atributo forClass indica a classe que iremos converter.

Também poderíamos cria o conversor usando um identificador, porém eu fiz alguns testes e para determinados comportamentos são gerados erros relacionados ao controle de estado. Se você também teve estas experiências, compartilhe-as!

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