Depois de muito pesquisar e de tentar muitas formas cheguei até esse código:
package br.com.intercom.sciweb.administracao.action.workspace;import javax.faces.component.UIViewRoot; import javax.faces.event.PhaseEvent; import javax.faces.event.PhaseId; import javax.faces.event.PhaseListener;import com.icesoft.faces.component.ext.HtmlForm;
import com.icesoft.faces.component.ext.HtmlOutputText;public class AppPhaseListener implements PhaseListener{
public AppPhaseListener() { } public void beforePhase(PhaseEvent e) { } public void afterPhase(PhaseEvent e) { // ativa o gerenciador de workspaces if (e.getFacesContext().getViewRoot().getViewId().equals("/administracao/main.xhtml")) startup(e.getFacesContext().getViewRoot()); } protected void startup(UIViewRoot root) { HtmlForm form = (HtmlForm) root.findComponent("form"); if (form == null){ System.out.println("FORM NULO !!!!!!!!!!!!!!!!"); return; } HtmlOutputText copyright = (HtmlOutputText) form.findComponent("copyright"); copyright.setValue("ALTERADO ---------------------"); } public PhaseId getPhaseId() { return PhaseId.RENDER_RESPONSE; }}
O problema que estou tendo é que mesmo achando o componente e setando o novo valor, na view continua o valor antigo, agora eu pergunto será preciso chamar a fase do render response de novo para que os novos valores sejam renderizados ou falta alguma coisa pra fazer.
Estou usando o myEclipse, Jboss, Seam, JSF e ICEFaces