Olá pessoal!
Tenho uma página jsf que contém um applet que lê um xml e faz o que tem que fazer. Para criar esse xml dinamicamente, há uma url para um servlet, o qual gera e grava no output stream do response o bendito xml.
Dentro do applet, há alguns desenhos com links que acessam o tal servlet e que transformam a aparencia do que é exibido pelo applet.
Nesta página há também um menu comum a todas as páginas (não pertencente ao applet), e um dos itens deste menu leva o usuário à página deste applet.
O usuário acessa a página, brinca com o applet e resolve então voltar o applet ao estado inicial. Ele então clica no item de menu mencionado acima.
Problema: O usuário percebe que a página é recarregada, porém o applet não! Ele mantém a aparência anterior ao clique no item do menu.
Debugando, notei que o servlet que monta o xml não é executado quando você navega desta página para ela mesma. Para recarregar, eu preciso sair para uma outra página e voltar para aquela do applet.
A seguir, o fonte da página e explicações mais detalhadas:
Fonte do conteúdo da página:<?xml version="1.0" encoding="UTF-8"?>
<ui:composition template="/templates/page.jspx"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<ui:define name="content">
<ui:decorate template="/templates/panel.jspx">
<ui:define name="panelContent">
<ice:form>
<applet id="hg" class="sitemap"
code="a.b.c.Applet"
name="testApplet" archive="myApplet.jar"
codebase="localhost:8080/ctx/resources/applet/"
width="98%" height="460" align="middle">
<param name="url" value="localhost:8080/ctx/XMLServlet?f=yes" />
<param name="properties" value="localhost:8080/ctx/resources/applet/myApplet.props" />
</applet>
</ice:form>
</ui:define>
</ui:decorate>
</ui:define>
</ui:composition>
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<div>
<ice:form>
<div style="color: white; padding: 1px; height: 20px; margin-left: 30px; margin-top: -5px;">
<ice:commandLink value="#{ui['menu.projeto.explorar']}" action="elemento.explorar" actionListener="#{elementoBean.iniciarPagina}"/>
</div>
<div style="color: white; padding: 1px; height: 20px; ">
<ice:commandLink value="#{ui['menu.projeto.funcional']}" action="funcional.explorar" actionListener="#{funcionalBean.iniciarPagina}"/>
</div>
<div style="color: white; padding: 1px; height: 20px; margin-left: 40px; margin-top: -15px"></div>
<ice:commandLink value="#{ui['menu.projeto.carga']}" onclick="alert('Carga on-line não está disponível nesta versão'); return false;"/>
</ice:form>
</div>
</ui:composition>
XMLServlet é o servlet que gera e grava o xml utilizado pelo applet no response.
Quando o usuário está em uma página diferente da postada acima, e clica no menu funcional.explorar, o método service(HttpServletRequest, HttpServletResponse) do XMLServlet é executado.
Agora, se o usuário já está na página em questão e clica no menu funcional.explorar, a página é recarregada (O actionListener do menu é executado), porém o o método service(HttpServletRequest, HttpServletResponse) do XMLServlet não é executado. Go figure...
Obrigado no mínimo pela paciência de ter chegado até aqui... :lol: