incubator-adffaces-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Carlson <carlso...@llnl.gov>
Subject Fwd: Re: [java] AOP with JSF, spring
Date Wed, 26 Dec 2007 17:33:22 GMT
<html>
<body>
<blockquote type=cite class=cite cite="">There are some action listeners
that aren't being intercepted by my action-listener wrapper.&nbsp; In
particular,<br>
I have a set of tabs that look like:<br>
'<br>
<font face="Courier New, Courier" color="#008080">&lt;</font>
<font face="Courier New, Courier" color="#3F7F7F">tr:navigationPane
</font><font face="Courier New, Courier" color="#7F007F">hint</font>
<font face="Courier New, Courier">=</font>
<font face="Courier New, Courier" color="#2A00FF">&quot;tabs&quot;</font>
<font face="Courier New, Courier" color="#008080">&gt;<br>
&lt;</font><font face="Courier New, Courier" color="#3F7F7F">
tr:commandNavigationItem
</font><font face="Courier New, Courier" color="#7F007F">text</font>
<font face="Courier New, Courier">=</font>
<font face="Courier New, Courier" color="#2A00FF">&quot;Quad Based&quot;
</font><font face="Courier New, Courier" color="#7F007F">selected</font>
<font face="Courier New, Courier">
=&quot;#{tabNavigationBean.quadBased}&quot;
</font><font face="Courier New, Courier" color="#7F007F">
actionListener</font><font face="Courier New, Courier">
=&quot;#{exRABean.laserDiagnosticsQuadBasedAction}&quot;
</font><font face="Courier New, Courier" color="#7F007F">rendered</font>
<font face="Courier New, Courier">
=&quot;#{navigationBean.laserDiagnostics}&quot;</font>
<font face="Courier New, Courier" color="#008080">&gt;&lt;/</font>
<font face="Courier New, Courier" color="#3F7F7F">
tr:commandNavigationItem</font>
<font face="Courier New, Courier" color="#008080">&gt;<br>
...<br><br>
</font>The actionListener is being called, but not the wrapper
action-listener defined in faces-config.xml.<br>
I use similar things in other places and it works just fine.<br><br>
This seems to happen when an underlying database table isn't there.&nbsp;
Perhaps Spring/JPA is getting in the way?</blockquote><br>
------------------------------------------------<br><br>
import java.lang.reflect.Method;<br><br>
public class ExceptionUtils {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
private ExceptionUtils() {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
}<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; /**<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * Iterates through all root exceptions for the throwable
entry and looks for<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * an exception that matches the given class (clazz). If this
exception was<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * caused buy an exception of type clazz, that root exception
is returned<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * <br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * @param cause<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * @param clazz<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; * @return<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp; */<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
public static Throwable getException(Throwable cause, Class clazz) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; Throwable throwable = null;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; do {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Throwable nextCause;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method rootCause =
cause.getClass().getMethod(&quot;getRootCause&quot;, new Class[]
{});<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nextCause = (Throwable)
rootCause.invoke(cause, new Object[] {});<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nextCause =
cause.getCause();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cause == nextCause) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (nextCause != null &amp;&amp;
nextCause.getClass().equals(clazz)) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throwable = nextCause;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cause = nextCause;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; } while (cause != null);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; return throwable;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
}<br><br>
<br>
}<br>
-----------------------------------------<br><br>
package gov.llnl.nif.dataviz.actionlistener.exceptionhandler;<br><br>
import java.sql.SQLException;<br><br>
import javax.faces.FacesException;<br>
import javax.faces.application.FacesMessage;<br>
import javax.faces.context.FacesContext;<br>
import javax.faces.event.AbortProcessingException;<br>
import javax.faces.event.ActionEvent;<br><br>
import oracle.toplink.essentials.exceptions.DatabaseException;<br><br>
import org.apache.log4j.Logger;<br>
import org.apache.myfaces.application.ActionListenerImpl;<br><br>
public class ExceptionHandlingActionListener extends ActionListenerImpl
{<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
private
static Logger log =
Logger.getLogger(ExceptionHandlingActionListener.class);<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
public String oneLiner(String s) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
String []
lines = s.split(&quot;[\r\n]+&quot;);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
StringBuilder sb = new StringBuilder();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
for
(String line : lines) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
sb.append(line);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
}<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab><x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
return
sb.toString();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
}<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
public void processAction(ActionEvent event) throws
AbortProcessingException {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; FacesContext facesContext =
FacesContext.getCurrentInstance();<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; try {<br><br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.processAction(event);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; } catch (FacesException fe)
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Throwable databaseException =
ExceptionUtils.getException(fe, DatabaseException.class);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (databaseException != null) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FacesMessage facesMessage = new
FacesMessage(FacesMessage.SEVERITY_ERROR,&quot;Database
Error&quot;,oneLiner(databaseException.getMessage()));<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; facesContext.addMessage(null,
facesMessage);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; <x-tab>&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
databaseException = ExceptionUtils.getException(fe,
SQLException.class);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if
(databaseException != null) {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR,
&quot;SQL Database error&quot;,
oneLiner(databaseException.getMessage()));<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
facesContext.addMessage(null, facesMessage);<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
} else {<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
throw fe;<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>
&nbsp;&nbsp;&nbsp; }<br>
<x-tab>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</x-tab>&nbsp;
}<br><br>
}<br>
----------------------------------------<br>
from faces-config.xml<br><br>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">application</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
action-listener</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gov.llnl.nif.dataviz.actionlistener.exceptionhandler.ExceptionHandlingActionListener<br>
&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
action-listener</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;<br>
&nbsp;</font><font face="Arial, Helvetica" size=4 color="#0000FF">
&lt;</font><font face="Arial, Helvetica" size=4 color="#800000">
default-render-kit-id</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>
org.apache.myfaces.trinidad.core</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
default-render-kit-id</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
&lt;</font><font face="Arial, Helvetica" size=4 color="#800000">
variable-resolver</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>
org.springframework.web.jsf.DelegatingVariableResolver</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
variable-resolver</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;!--</font>
<font face="Arial, Helvetica" size=4 color="#808080">&nbsp;&nbsp;&nbsp;
&lt;navigation-handler&gt;org.springframework.webflow.executor.jsf.FlowNavigationHandler&lt;/navigation-handler&gt;<br>
&nbsp;
&lt;variable-resolver&gt;org.springframework.webflow.executor.jsf.DelegatingFlowVariableResolver&lt;/variable-resolver&gt;</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">--&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">locale-config</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">default-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>en</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">default-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>en</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>es</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>de</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>fr</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>nl</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>pt_BR</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;
</font><font face="Arial, Helvetica" size=4 color="#0000FF">&lt;</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;</font>
<font face="Arial, Helvetica" size=4>zh_CN</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">
supported-locale</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
</font><font face="Arial, Helvetica" size=4>&nbsp;</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&lt;/</font>
<font face="Arial, Helvetica" size=4 color="#800000">locale-config</font>
<font face="Arial, Helvetica" size=4 color="#0000FF">&gt;<br>
&lt;/</font><font face="Arial, Helvetica" size=4 color="#800000">
application</font><font face="Arial, Helvetica" size=4 color="#0000FF">
&gt;</font></body>
</html>

Mime
View raw message