vaadin 7 paramètre d'URL

Je ne suis pas trop familier avec vaadin 7 et je ne peux pas comprendre cela. J'ai essayé d'utiliser google, mais aucun résultat utile.

Ma question est très simple. Comment puis-je obtenir l'url de la requête de paramètres dans ma classe UI?

Mon url a un paramètre: host/myvaadinapp/?code=erefdvdfgftf...

Le paramètre d'url provient de facebook après que l'utilisateur est connecté (OAuth) et j'ai besoin de gérer la valeur de code de paramètre de l'url dans mon code.

J'ai essayé de faire ceux-ci:

    @PreserveOnRefresh
    public class AdminUi extends UI
    {
        @Override
        protected void init(VaadinRequest request)
        {
            ...
            System.out.println( request.getPathInfo());
            System.out.println( request.getRemoteHost());
            System.out.println( request.getParameterMap().size());
            System.out.println( request.getAttribute("code") );
            System.out.println( request.getParameter("code") );
            ...
        }
    }

Résultat:
demande.getAttribute("code"): null
demande.getParameter("code"): null

J'ai réalisé que getParameterMap (a), d'une "v-loc" paramètre. Mais si je l'utilise variable je dois écrire un peu de code pour obtenir le paramètre d'url à partir de cette variable:

v-loc: host/myvaadinapp/?code=erefdvdfgftf...
thème: rennes
v-rtzo: -600
v-dston: faux
...

Je pense, il n'est pas trop belle solution.

Pourriez-vous m'aider comment puis-je obtenir l'url d'origine des paramètres dans vaadin?

Merci.


Mon commentaire sont:

J'ai essayé d'utiliser la demande.getParameter("code"), mais ça ne fonctionnait pas. Je ne sais pas pourquoi.

Mon url d'origine était: host/demoVaadinApp/?name=zzz

J'ai utilisé ce code:

    public class Xxxx extends UI
    {
        /**
     * Main UI
     */
    @Override
    protected void init(VaadinRequest request)
    {
        String name = request.getParameter("name");
        if (name == null)
            {
            name = "Unknown";
        }

        setContent(new Label("Hello " + name));
        }
    }

Je commence mon vaadin application en Intégrant le mode d'INTERFACE utilisateur.

Le contenu de mon web.xml fichier:

<!-- ******************************************************************* -->
<!-- context parameters                                                  -->
<!-- ******************************************************************* -->
<context-param>
    <description>Vaadin production mode</description>
    <param-name>productionMode</param-name>
    <param-value>false</param-value>
</context-param>

<!-- ******************************************************************* -->
<!-- servlet definition                                                  -->
<!-- ******************************************************************* -->
<!-- +++++ Vaadin  servlet +++++++++++++++++++++++++++++++++++++++++++++ -->
<servlet>
    <servlet-name>VaadinServlet</servlet-name>
    <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
    <init-param>
        <description>Vaadin UI class</description>
        <param-name>UI</param-name>
        <param-value>com.coupoholics.ui.admin.AdminUi</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>VaadinServlet</servlet-name>
    <url-pattern>/VAADIN/*</url-pattern>
</servlet-mapping>

<!-- ******************************************************************* -->
<!-- welcome file list definition                                        -->
<!-- ******************************************************************* -->
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

index.html:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<script type="text/javascript" src="./VAADIN/vaadinBootstrap.js"></script>
<iframe tabindex="-1" id="__gwt_historyFrame" style="position: absolute; width: 0; height: 0; border: 0; overflow: hidden" src="javascript:false"></iframe>
<div id="content-body">
<!-- Optional placeholder for the loading indicator -->
<div class=" v-app-loading"></div>
<!-- Alternative fallback text -->
<noscript>You have to enable javascript in your browser to use this application.</noscript>
</div>
<!--  Initializing the UI -->
<script type="text/javascript">
//<![CDATA[
if (!window.vaadin)
alert("Failed to load the bootstrap JavaScript:" + "VAADIN/vaadinBootstrap.js");
/* The UI Configuration */
vaadin.initApplication("content-body", {
"browserDetailsUrl": "VAADIN",
"serviceUrl": "VAADIN",
"widgetset": "com.vaadin.DefaultWidgetSet",
"theme": "reindeer",
"versionInfo": {"vaadinVersion": "7.0.5"},
"vaadinDir": "VAADIN/",
"heartbeatInterval": 300,
"debug": true,
"standalone": false,
"authErrMsg": {
"message": "Take note of any unsaved data, "+
"and <u>click here<\/u> to continue.",
"caption": "Authentication problem"
},
"comErrMsg": {
"message": "Take note of any unsaved data, "+
"and <u>click here<\/u> to continue.",
"caption": "Communication problem"
},
"sessExpMsg": {
"message": "Take note of any unsaved data, "+
"and <u>click here<\/u> to continue.",
"caption": "Session Expired"
}
});//]]>
</script>
</body>

Mon résultat est:
Bonjour Inconnu.

Si je n'utilise pas l'Incorporation de l'INTERFACE utilisateur mode que tout fonctionne très bien.

Où est le problème?


La solution (merci pour Leif Åstrand):

var urlParts = fenêtre.emplacement.href.split("?");

var queryString = (urlParts.longueur == 1) ? "" : "?" + urlParts[1];

queryString = (urlParts.longueur == 0) ? "" : queryString.split("#")[0];

et

"browserDetailsUrl": "VAADIN" + queryString,

L'intégralité du code source:

    <!--  Initializing the UI -->
<script type="text/javascript">
var urlParts = window.location.href.split("?");
var queryString = (urlParts.length == 1) ? "" : "?" + urlParts[1];
queryString = (urlParts.length == 0) ? "" : queryString.split("#")[0];
//<![CDATA[
if (!window.vaadin)
alert("Failed to load the bootstrap JavaScript:" + "VAADIN/vaadinBootstrap.js");
/* The UI Configuration */
vaadin.initApplication("content-body", {
"browserDetailsUrl": "VAADIN" + queryString,
"serviceUrl": "VAADIN",
...
InformationsquelleAutor zappee | 2013-05-11