Package hirondelle.fish.main.visit

Source Code of hirondelle.fish.main.visit.CustomController

package hirondelle.fish.main.visit;

import java.util.Locale;
import java.util.logging.Logger;
import hirondelle.web4j.Controller;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.util.Util;

/**
Example implementation of translation by using multiple JSPs.
<P>The one-JSP-per-language style is implemented by providing an override for
{@link Controller#swapResponsePage(ResponsePage , Locale)}, as done here.
<P><span class="highlight">This style of implementing translation is not recommended,
since it causes so much repetition of identical markup across many JSPs.</span>
The services of the <tt>hirondelle.web4j.ui.translate</tt> package should
be used instead.
 
<P>Here, only one particular feature is affected - the Visits page, which is
split into <tt>Visit_en.jsp</tt> and <tt>Visit_fr.jsp</tt>, when this
custom Controller is used.
<P>(The <tt>Visit.jsp</tt> page uses the recommended style of translation,
where markup is not repeated across multiple pages.)  
 
<P>This example is not complete - it merely exercises the general mechanism. To run it,
edit the <tt>servlet-class</tt> setting in <tt>web.xml</tt> to refer to <em>this</em>
custom Controller class. After starting the app, then navigate to the <tt>Visits</tt> page,
and flip the Locale using the <tt>Preferences</tt> page. This will exercise the mechanism.
*/
public final class CustomController extends Controller {
 
  /**
   Returns a non-<tt>null</tt> value only if <tt>aResponsePage</tt> ends with <tt>'Visit.jsp'</tt>.
  */
  @Override protected ResponsePage swapResponsePage(ResponsePage aResponsePage, Locale aLocale){
    fLogger.fine("Custom Controller : " + aResponsePage);
    ResponsePage result = null;
    if (aResponsePage.toString().endsWith("Visit.jsp")){
      int idx = aResponsePage.toString().indexOf("Visit.jsp");
      String alteredURI = aResponsePage.toString().substring(0,idx) + "Visit_" + aLocale.toString() + ".jsp";
      fLogger.fine("Forward Response Page updated for locale: " + alteredURI);
      result = new ResponsePage(alteredURI).setIsRedirect(Boolean.FALSE);
    }
    return result;
  }
 
  // PRIVATE //
  private static final Logger fLogger = Util.getLogger(CustomController.class);
}
TOP

Related Classes of hirondelle.fish.main.visit.CustomController

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.