Package org.ajax4jsf.context

Examples of org.ajax4jsf.context.AjaxContext


    if (log.isDebugEnabled()) {
      log.debug("Process after phase " + phaseId.toString());
    }
    FacesContext context = event.getFacesContext();
    Map requestMap = context.getExternalContext().getRequestMap();
    AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
    if (phaseId == PhaseId.RENDER_RESPONSE) {
      try {
        if (ajaxContext.isAjaxRequest()) {
          // JSF RI 1.1 hack - view state not saved in <f:view> tag.
          if (null == requestMap.get(VIEW_STATE_SAVED_PARAM)) {
            ajaxContext.saveViewState(context);
          }
        }
      } catch (IOException e) {
        throw new FacesException(e);
      } finally {
        ajaxContext.release();
      }
      // ajaxContext.processHeadResources(context);
    } else if (phaseId == PhaseId.RESTORE_VIEW) {

      UIViewRoot viewRoot = context.getViewRoot();
      if (null != viewRoot) {
        boolean isAjax = ajaxContext.isAjaxRequest();
        Map attributes = viewRoot.getAttributes();
        for (Iterator it = attributes.keySet().iterator(); it.hasNext();) {
          Object key = it.next();
          if (key instanceof String) {
            String stringKey = (String) key;
            if (stringKey.startsWith(VIEW_BEAN_PREFIX)) {
              requestMap.put(stringKey.substring(VIEW_BEAN_PREFIX
                  .length()), attributes.get(key));
            } else if (isAjax
                && stringKey.startsWith(AJAX_BEAN_PREFIX)) {
              requestMap.put(stringKey.substring(AJAX_BEAN_PREFIX
                  .length()), attributes.get(key));
            }

          }
        }
      }
    }
    if(context.getResponseComplete()){
      ajaxContext.release();
    }
  }
View Full Code Here


    parameters.put(controlName, controlValue);
    // Move processing of a 'single' attribute to a server-side.
//    if (ajaxSingle) {
//      options.put("single", JSReference.TRUE);
//    }
    AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
    // Setup action URL. For portlet environment, it will be different from
    // page.
    options.put("actionUrl", ajaxContext.getAjaxActionURL(facesContext));
    // Add application-wide Ajax parameters
    parameters.putAll(ajaxContext.getCommonAjaxParameters());
    // add child parameters
    for (Iterator it = uiComponent.getChildren().iterator(); it.hasNext();) {
      UIComponent child = (UIComponent) it.next();
      if (child instanceof UIParameter) {
        String name = ((UIParameter) child).getName();
View Full Code Here

   * @param component
   * @throws IOException
   */
  public static void encodeAreas(FacesContext context,
      UIComponent component) throws IOException {
    AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
    ExternalContext externalContext = context.getExternalContext();
    Map requestMap = externalContext.getRequestMap();
    Set rendered = ajaxContext.getAjaxRenderedAreas();
    StringBuffer senderString = new StringBuffer();
    // write special area for list of rendered elements. Client-side
    // Java
    // Script
    // read this structure for update areas of DOM tree.
    ResponseWriter out = context.getResponseWriter();
    // Create <span> element to keep list rendered aread ( in title
    // attribute )
    // More right will create special namespace for such
    // information,
    // but I want to keep simple html ( xhtml ) document - on case
    // I have troubles with microsoft XMLHTTP validations.
    out
        .startElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG,
            component);
    out.writeAttribute(HTML.NAME_ATTRIBUTE,
        AjaxContainerRenderer.AJAX_UPDATE_HEADER, null);
    for (Iterator it = rendered.iterator(); it.hasNext();) {
      String id = (String) it.next();
      // out.startElement(AJAX_RESULT_TAG, component);
      // out.writeText(id,null);
      // out.endElement(AJAX_RESULT_TAG);
      senderString.append(id);
      if (it.hasNext()) {
        senderString.append(',');
      }
    }
    out.writeAttribute(AjaxContainerRenderer.AJAX_RESULT_GROUP_ATTR,
        senderString, null);
    out.endElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG);
    // For sequences and client-saved states.

    out.startElement(AjaxContainerRenderer.AJAX_VIEW_STATE_TAG, component);
    out.writeAttribute(HTML.id_ATTRIBUTE,
        AjaxContainerRenderer.AJAX_VIEW_STATE_ID, null);
    writeState(context);
    out.endElement(AjaxContainerRenderer.AJAX_VIEW_STATE_TAG);
    // Write rendered flag to html <meta>
    out
        .startElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG,
            component);
    out.writeAttribute(HTML.id_ATTRIBUTE,
        AjaxContainerRenderer.AJAX_FLAG_HEADER, null);
    out.writeAttribute(HTML.NAME_ATTRIBUTE,
        AjaxContainerRenderer.AJAX_FLAG_HEADER, null);
    out.writeAttribute(AjaxContainerRenderer.AJAX_RESULT_GROUP_ATTR,
        "true", null);
    out.endElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG);
    // set response header with list of rendered ID's
    Object response = externalContext.getResponse();
    // Use reflection for send responce headers - we can get
    // different responces classes
    // for different environment ( portal, cocoon etc )
    if (response instanceof HttpServletResponse) {
      HttpServletResponse httpResponse = (HttpServletResponse) response;
//      httpResponse.setHeader(AjaxContainerRenderer.AJAX_UPDATE_HEADER,
//          senderString.toString());
      httpResponse.setHeader(AjaxContainerRenderer.AJAX_FLAG_HEADER,
          "true");
    } else {
      try {
        Method setHeadergMethod = response.getClass()
            .getMethod("setHeader",
                new Class[] { String.class, String.class });
//        setHeadergMethod.invoke(response, new Object[] {
//            AjaxContainerRenderer.AJAX_UPDATE_HEADER,
//            senderString.toString() });
        setHeadergMethod.invoke(response, new Object[] {
            AjaxContainerRenderer.AJAX_FLAG_HEADER, "true" });
      } catch (Exception e) {
        log
            .error(Messages
                .getMessage(Messages.DETECTING_ENCODING_DISABLED_ERROR));
        log.error(Messages.getMessage(
            Messages.OBTAIN_RESPONSE_SET_HEADER_ERROR, e));
      }
    }
    Map responseDataMap = ajaxContext.getResponseDataMap();
    // Get data serializer instance
    AJAXDataSerializer serializer = (AJAXDataSerializer) ServicesUtils
        .getServiceInstance(AJAXDataSerializer.SERVICE);
    // Put data to JavaScript handlers, inside <span> elements.
    for (Iterator dataIterator = responseDataMap.keySet().iterator(); dataIterator
        .hasNext();) {
      Object dataKey = dataIterator.next();
      out.startElement(HTML.SPAN_ELEM, component);
      out.writeAttribute(HTML.id_ATTRIBUTE, dataKey, null);
      String dataString = serializer.asString(responseDataMap
          .get(dataKey));
      out.write(dataString);
      out.endElement(HTML.SPAN_ELEM);
    }
    // Include active 'oncomplete' function content :
    Object oncomplete = ajaxContext.getOncomplete();
    if(null != oncomplete){
      out.startElement(HTML.SPAN_ELEM, component);
      out.writeAttribute(HTML.id_ATTRIBUTE, ONCOMPLETE_CONTENT_ID, null);
      out.writeText(oncomplete,null);
      out.endElement(HTML.SPAN_ELEM);     
View Full Code Here

      // complete re-Render fields. AjaxEvent deliver before render
      // response.
      setupReRender(context);
      // Put data for send in response
      Object data = getData();
      AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
      if (null != data) {
        ajaxContext.setResponseData(data);
      }
      String focus = getFocus();
      if (null != focus) {
        // search for component in tree.
        // XXX - use more pourful search, as in h:outputLabel
        // component.
        UIComponent focusComponent = RendererUtils.getInstance().
          findComponentFor(this, focus);
        if (null != focusComponent) {
          focus = focusComponent.getClientId(context);
        }
        ajaxContext.getResponseDataMap().put(FOCUS_DATA_ID, focus);
      }
      ajaxContext.setOncomplete(getOncomplete());
    }
  }
View Full Code Here

 
  /* (non-Javadoc)
   * @see org.ajax4jsf.framework.ajax.AjaxInvoker#invokeOnRegionOrRoot(org.ajax4jsf.framework.ajax.AjaxViewRoot, javax.faces.context.FacesContext, org.ajax4jsf.framework.ajax.InvokerCallback, javax.faces.event.PhaseId)
   */
  public void invokeOnRegionOrRoot(AjaxViewRoot viewRoot, FacesContext context, InvokerCallback callback) {
    AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
    String submittedRegionClientId = ajaxContext.getSubmittedRegionClientId(context);
    if(null == submittedRegionClientId || viewRoot.getId().equals(submittedRegionClientId)){
      // This is a not AJAX request, or active region is root.
      callback.invokeRoot(context);
    } else {
      if(!invokeOnComponent(viewRoot, context, callback, submittedRegionClientId)){
View Full Code Here

public class UploadRichFacesRenderer extends FileUploadRenderer {
   
    @Override
    public String getActionUrl(FacesContext context){
        AjaxContext ajaxContext = org.ajax4jsf.context.AjaxContext.getCurrentInstance(context);
        String ajaxActionUrl = ajaxContext.getAjaxActionURL(context);
        return "/portal" + ajaxActionUrl;
    }
View Full Code Here

  protected boolean isRichFacesAjaxRequest(HttpServletRequest request, HttpServletResponse response) {
    FacesContextHelper helper = new FacesContextHelper();
    try {
      FacesContext facesContext = helper.getFacesContext(getServletContext(), request, response);
      AjaxContext context = AjaxContext.getCurrentInstance(facesContext);
      if (context != null) {
        return context.isAjaxRequest(facesContext);
      } else {
        return false;
      }
    } finally {
      helper.cleanup();
View Full Code Here

     */
    public void encodeChildren(final FacesContext context,
                               final UIComponent component)
            throws IOException {
        UISuggestionBox suggestionBox = (UISuggestionBox) component;
        AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
        Set<String> ajaxRenderedAreas = ajaxContext.getAjaxRenderedAreas();
        String clientId = component.getClientId(context);
       
        if (suggestionBox.isSubmitted()) {
            body.encode(getTemplateContext(context, suggestionBox));
            // Replace rendered area ID from component to suggestion table
            suggestionBox.setRowIndex(-1);
            ajaxContext.removeRenderedArea(clientId);
            ajaxContext.addRenderedArea(getContentId(context, component));
        }
        else if (ajaxContext.isAjaxRequest() && ajaxRenderedAreas.contains(clientId))
        {
          ajaxRenderedAreas.add(clientId + "_script");
        }
    }
View Full Code Here

       
    component.getAttributes().remove(PARTIAL_UPDATE);
    component.getAttributes().remove(UPDATE_HEADER);
   

    AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
   
    if(component instanceof UIScrollableDataTable){
   
      UIScrollableDataTable grid = (UIScrollableDataTable)component;
      ExternalContext externalContext = context.getExternalContext();
      String clientId = grid.getClientId(context);
      boolean sorted = false
      Map<String, String> parameters = externalContext.getRequestParameterMap();
     
      String s_id = clientId + ":si";
      grid.resetReqRowsCount();
      if(parameters.containsKey(s_id)){
        String options = (String)parameters.get(s_id);
        grid.setScrollPos(options);
        if(options.length() > 0){
          String[] si = options.split(",");
          grid.setFirst(Integer.parseInt(si[1]));
          component.getAttributes().put(ScrollableDataTableUtils.CLIENT_ROW_KEY, Integer.parseInt(si[3]));     
        }
      }
         
      composite.decode(context, component);
     
      if(parameters.containsKey(clientId + ":sortColumn") &&
         parameters.containsKey(clientId + ":sortStartRow") &&
         parameters.containsKey(clientId + ":sortIndex")){
       
        String sortColumn = (String)parameters.get(clientId + ":sortColumn");
        int sortDataIndex = Integer.parseInt((String)parameters.get(clientId + ":sortIndex"));
        Integer sortStartRow = Integer.valueOf((String)parameters.get(clientId + ":sortStartRow"));
       
        String sortOrderString =
          (String) parameters.get(clientId + ":sortOrder");
       
        Boolean so = null;
       
        if (sortOrderString != null && sortOrderString.length() > 0 ) {
          sortOrderString = sortOrderString.toLowerCase();
         
          if (sortOrderString.startsWith("a")) {
            so = Boolean.TRUE;
          } else if (sortOrderString.startsWith("d")){
            so = Boolean.FALSE;
          }
        }
       
       
        UIComponent column = grid.findComponent(sortColumn);
       
        if(ColumnUtil.isSortable(column)){
     
          sorted = true;
          SortEvent sortEvent = new SortEvent(grid,sortColumn, grid.getRows(), sortDataIndex);
         
          sortEvent.setProposedOrder(so);
         
          sortEvent.setAttribute(ScrollableDataTableUtils.CLIENT_ROW_KEY,sortStartRow);
         
          if (ajaxContext.isAjaxRequest()) {
            sortEvent.setAttribute(PARTIAL_UPDATE, Boolean.TRUE);
            sortEvent.setAttribute(UPDATE_HEADER, Boolean.TRUE);
          }
         
         
          sortEvent.queue();
       
      }
     
     
      if(parameters.containsKey(clientId + ":scroll") && !sorted){
         
        String submitedState = (String)parameters.get(clientId + "_state_input");
        if (submitedState != null) {
          boolean isEmpty = true;
         
         
          String [] values = submitedState.split(",");
          for (int i = 0; i < values.length; i++) {
            isEmpty = isEmpty && values[i].equals("");
          }
         
          int rows = 0;
          int first = 0;
         
          if(!isEmpty){
            rows = Integer.parseInt(values[0]);
            first = Integer.parseInt(values[1]);
            ScrollEvent scrollEvent = new ScrollEvent(grid,rows,first);

            scrollEvent.setAttribute(ScrollableDataTableUtils.CLIENT_ROW_KEY,Integer.valueOf(values[2]));           
           
            if (ajaxContext.isAjaxRequest()) {
              scrollEvent.setAttribute(PARTIAL_UPDATE, Boolean.TRUE);
            }

            scrollEvent.queue();
           
View Full Code Here

   
   
   
    ScrollableDataTableRendererState state = ScrollableDataTableRendererState.createState(context, grid);
       
    AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
    String client_id = grid.getClientId(context);
   
    state.setClientId(client_id);
    state.setAjaxContext(ajaxContext);
    state.setRowIndex(ScrollableDataTableUtils.getClientRowIndex(grid));
   
    if (log.isDebugEnabled()) {
      log.debug("ScrollableDataTableBaseRenderer.renderAjaxChildren()");
    }
   
    grid.getResponseData().clear();
   
    ResponseWriter writer = context.getResponseWriter();
    writer.startElement("table", grid);
    writer.startElement("tbody", grid);
   
    grid.walk(context, ajaxRowsRenderer, state);
    int fakeRowsCount = grid.getRows() - grid.getRowCount();
    ScrollableDataTableRendererState.restoreState(context);
    grid.setRowKey(null);
    state.setFake(true);
    for (int i = 0; i < fakeRowsCount; i++) {
      ajaxRowsRenderer.process(context, null, state)
    }
   
    state.setFake(false);
   
    writer.endElement("tbody");
    writer.endElement("table");
    String id = client_id+"_rows_input";
    writer.startElement(HTML.INPUT_ELEM, grid);
    writer.writeAttribute(HTML.TYPE_ATTR, "hidden", null);
    writer.writeAttribute(HTML.id_ATTRIBUTE, id, null);
    writer.writeAttribute(HTML.NAME_ATTRIBUTE, id, null);
    writer.writeAttribute(HTML.value_ATTRIBUTE, grid.getRowCount(), null);
    writer.endElement(HTML.INPUT_ELEM);
    ajaxContext.addRenderedArea(id);

    renderHiddenScrollInput(context, grid);
    ajaxContext.addRenderedArea(client_id+":si");
   
    ajaxContext.setResponseData(grid.getResponseData());
   
    ajaxContext.getAjaxRenderedAreas().remove(grid.getClientId(context));
    ScrollableDataTableScrollData options = createOptions(grid);
    ajaxContext.getResponseDataMap().put("options", options);
   
    //Then call contributors to write additional HTML content
    contributorsEncodeHere(context, grid);
 
    if (shouldUpdateHeader(component)) {
View Full Code Here

TOP

Related Classes of org.ajax4jsf.context.AjaxContext

Copyright © 2018 www.massapicom. 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.