• Nenhum resultado encontrado

XHTML com Internacionalização

No documento Java Frameworks e Aplicações Corporativas (páginas 117-121)

Todos os XHTML que forem usar o recurso da internacionalização precisam ser preparados para tal. São dois pontos a serem observados:

q

1 Usar <f:view> para indicar a internacionalização e qual o idioma padrão. Por exemplo:

<f:view locale=”#{localeMB.currentLocale}”>

1 Todas as mensagens a serem apresentadas devem estar no arquivo de mensagens configurado no faces-config.xml. Por exemplo:

<h:outputText value=”#{msgs.name}” />

O código apresentado na figura 6.3, a seguir, mostra um XHTML preparado para interna- cionalização contendo dois botões que, ao serem pressionados, alteram o idioma em que a aplicação deve ser mostrada.

Figura 6.2

Configurações do arquivo faces- config.xml para internacionalização.

JA VA – F ra m ew or ks e A pl ic aç õe s Co rp or at iv as <html xmlns=”http://www.w3.org/1999/xhtml” xmlns:h=”http://java.sun.com/jsf/html” xmlns:f=”http://java.sun.com/jsf/core”> <f:view locale=”#{localeMB.currentLocale}”> <h:head> <title>#{msgs.title}</title> </h:head> <h:body> <h:form> <h:outputText value=”#{msgs.name}” /> <h:inputText id=”nome” /> <br/> <h:commandLink value=”English” action=”#{localeMB.englishLocale()}” /><br/> <h:commandLink value=”Português” action=”#{localeMB.portugueseLocale()}” /> </h:form> </h:body> </f:view> </html>

AJAX

AJAX significa Asynchronous Javascript And XML. Traduz-se em uma maneira de fazer requisições na internet através de Javascript, de forma assíncrona, sem que a página toda precise ser recarregada. As grandes vantagens no seu uso estão na atualização de trechos da página sem recarregar toda a tela e na realização de requisições sem interromper a navegação dos usuários.

q

Asynchronous Javascript And XML. Uso:

1 Atualização de trechos da página sem recarregar toda a tela.

1 Realização de requisições sem interromper a navegação dos usuários. Usando AJAX com JSF, podemos definir:

1 O evento de um componente para fazer a requisição. 1 Que componentes da tela serão avaliados no servidor. 1 Que componentes da tela serão atualizados após a requisição. 1 Que método do MB será invocado na requisição.

A tag usada para invocar uma requisição AJAX é <f:ajax>, e cada um dos elementos citados pode ser configurado através de atributos específicos.

Eventos

Uma requisição AJAX deve ser invocada através de um evento, geralmente relacionado aos eventos visuais, de tela, invocados pelo usuário.

Figura 6.3 Configurações do arquivo faces-config.xml para internacionalização.

rn aci on al iz aç ão , A JA X e P ri mef ac es

Exemplo de requisição AJAX:

<h:inputText > <f:ajax /> </h:inputText>

Esse código indica que a requisição AJAX ocorrerá sempre que o conteúdo do inputText for modificado (evento default é onchange).

No exemplo a seguir, explicita-se o evento que dispara a requisição usando o atributo event:

<h:inputText >

<f:ajax event=”keyup” /> </h:inputText>

Esse código deixa claro que a requisição só será acionada quando o evento onkeyup for disparado.

Uma outra situação é configurar um componente, por exemplo, <h:commandButton>, para realizar algo somente quando ocorrer um evento de ação. No próximo exemplo, a ação do commandButton (invocação do action) será executada via AJAX quando o botão for clicado (onclick, que é o evento default).

<h:commandButton action=”...”> <f:ajax />

</h:commandButton>

q

Os eventos default (quando event não é especificado) são: 1 Para componentes de Entrada de Dados: valueChange 1 Para componentes de Ação: action

O AJAX do JSF Suporta todos os eventos do DOM:

1 Os eventos do DOM são todos suportados com os mesmos nomes, mas sem o prefixo “on”;

1 valueChange: para elementos de entrada de dados, alteração de valor; 1 action: para elementos de ação, por exemplo, botões, ação efetuada.

Para agrupar vários componentes, usa-se a tag <f:ajax> ao redor de todos os componentes agrupados.

Exemplo de agrupamento de componentes:

<f:ajax >

<h:inputText /> <h:inputSecret /> Mais informações sobre

o DOM: http://en. wikipedia.org/wiki/ DOM_events

JA VA – F ra m ew or ks e A pl ic aç õe s Co rp or at iv as

Componentes

Para determinar quais componentes devem ser enviados e avaliados no servidor, usamos o atributo execute. Esse atributo pode conter uma lista com todos os IDs dos campos que serão avaliados (separados por espaços). O default é ser enviado somente o próprio elemento.

q

Atributo execute:

1 Determina quais componentes devem ser avaliados no servidor; 1 Forma de uso:

2 Lista com todos os IDs dos campos que serão avaliados. 3 Default é o próprio elemento;

3 Podemos usar o padrão de IDs para campos de formulário: id1:id2.

O exemplo a seguir mostra o envio de tudo: o formulário, o componente de formulário e todos os seus filhos. Todos serão avaliados no ciclo de vida do JSF, após a requisição AJAX.

<h:form id=”formulario”> <h:inputText /> <h:inputSecret />

<h:commandButton value=”Enviar”>

<f:ajax event=”click” execute=”formulario” /> </h:commandButton>

</h:form>

q

O execute indica quais valores (componentes) serão enviados para processamento via AJAX e pode ter os seguintes valores:

1 @all: todos os componentes da tela serão enviados; 1 @none: nenhum componente da tela será enviado;

1 @this: somente o componente que disparou a requisição AJAX será enviado; 1 @form: todos os componentes do formulário que contém o componente que dis-

parou a requisição AJAX serão enviados. Também pode ser atribuído com:

1 Lista de IDs, separados por espaço;

1 Expressão EL, que resulta em uma coleção de Strings contendo os IDs dos elementos a serem processados.

Atualização

Quando se faz uma requisição AJAX, parte da (ou toda) a tela deve ser atualizada. O atributo render indica se a recarga é de parte ou de toda a tela.

No exemplo a seguir, é indicado que o texto com id numero1 e o texto com id numero2 devem ser recarregados após a chamada AJAX.

Pode-se usar o padrão de id’s para campos de formulário: id1:id2. como por exemplo: “formId:textId”

rn aci on al iz aç ão , A JA X e P ri mef ac es <h:commandButton value=”Processar”>

<f:ajax event=”click” render=”numero1 numero2”/> </h:commandButton> <h:outputText id=”numero1” value=”#{alunoMB.matricula}” /> <h:outputText id=”numero2” value=”#{alunoMB.matricula}” />

q

O render pode receber os seguintes valores:

1 @all: todos os componentes da tela serão atualizados; 1 @none: nenhum componente da tela será atualizado;

1 @this: somente o componente que disparou a requisição AJAX será atualizado; 1 @form: todos os componentes do formulário que contém o componente que dis-

parou a requisição AJAX serão atualizados. Também pode ser atribuído com:

1 Lista de IDs, separados por espaço;

1 Expressão EL que resulta em uma coleção de Strings, contendo os IDs dos elementos a serem processados.

No documento Java Frameworks e Aplicações Corporativas (páginas 117-121)