Package org.jboss.seam.ui.renderkit

Source Code of org.jboss.seam.ui.renderkit.RemoteRendererBase

package org.jboss.seam.ui.renderkit;

import java.io.IOException;
import java.util.Map;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;

import org.jboss.seam.ui.component.UIRemote;
import org.jboss.seam.ui.util.cdk.RendererBase;

/**
* Renderer for rendering the required <script> tags for Seam Remoting
*
* @author Shane Bryzak
*/
public class RemoteRendererBase extends RendererBase
{
   @Override
   protected Class getComponentClass()
   {
      return UIRemote.class;
   }

   @Override
   protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component)
      throws IOException
   {
      UIRemote remote = (UIRemote) component;
     
      writeScript(context, remote);
   }
  
   @Override
   protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent component)
      throws IOException
   {
      writer.flush();
   }
  
   public void writeScript(FacesContext context, UIRemote remote)
      throws IOException
   {
      ResponseWriter response = context.getResponseWriter();
     
      Map request = context.getExternalContext().getRequestMap();
      if (!request.containsKey("REMOTE_SCRIPT"))
      {
         response.startElement("script", null);
         response.writeAttribute("type", "text/javascript", null);
         response.writeAttribute("src", context.getExternalContext().getRequestContextPath()
                  + "/seam/resource/remoting/resource/remote.js", null);
         response.endElement("script");
         request.put("REMOTE_SCRIPT", true);
      }

      response.startElement("script", null);
      response.writeAttribute("type", "text/javascript", null);
      response.writeAttribute("src", context.getExternalContext().getRequestContextPath()
               + "/seam/resource/remoting/interface.js?" +
               remote.getInclude().replace(',', '&'), null);
      response.endElement("script");
   }
}
TOP

Related Classes of org.jboss.seam.ui.renderkit.RemoteRendererBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.