"nhpvti" wrote : 
  | I've tried custom navigation handler for adding language suffix at the end 
of an action,  for example: register_en, register_de
  | 

My custom view handler works seamless with JSF navigation and Seam pageflow and 
forces templates names in the form of name_loc.xhtml, for example 
register_en.xhtml, register_de.xhtml Etc.

Hope that this won't cause any complications in future versions of Faces or 
Seam.

Here the details:

1) In faces-config.xml (for example):

<application>
  |   <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  |   <view-handler>com.mycompany.util.LocaleViewHandler</view-handler>
  |   <message-bundle>messages</message-bundle>
  |             <locale-config>
  |                     <default-locale>en</default-locale>
  |                     <supported-locale>en</supported-locale>
  |                     <supported-locale>de</supported-locale> 
  |                     <supported-locale>ru</supported-locale>         
  |             </locale-config>
  | </application>

2) Implement LocaleViewHandler class (some additional methods have to be 
implemented, but they should simply wrap the base class functionality)


import javax.faces.application.ViewHandler;
  | ...
  | public class LocaleViewHandler extends ViewHandler
  | {
  |     private ViewHandler         base;
  |     private static final String separator             = "_";
  |     private static final String actionExtension       = ".seam";
  | 
  |     public LocaleViewHandler(ViewHandler base)
  |     {
  |         super();
  |         this.base = base;
  |     }
  | 
  |     public String getActionURL(FacesContext context, String viewId)
  |     {
  |         StringBuilder newActionURL = null;
  |         String actionURL = this.base.getActionURL(context, viewId);
  |         StringBuilder localeSuffix = new StringBuilder(separator);
  |         localeSuffix.append(LocaleSelector.instance().getLocaleString());
  |         StringBuilder localizedEnd = new StringBuilder(localeSuffix);
  |         localizedEnd.append(actionExtension);
  |         int pointPosition = actionURL.indexOf(actionExtension);
  |         if (pointPosition != -1 && 
actionURL.indexOf(localizedEnd.toString()) == -1)
  |         {
  |             newActionURL = new StringBuilder(actionURL.substring(0, 
pointPosition));
  |             newActionURL.append(localizedEnd);
  |             return newActionURL.toString();
  |         } else
  |         {
  |             return actionURL;
  |         }
  |     }
  | ...
  | }

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3971869#3971869

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3971869
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to