Spring Roo с декларативной строкой меню Dojo / Dijit? - PullRequest
1 голос
/ 29 июля 2011

Я пытаюсь использовать декларативное меню Dojo / Dijit с Spring ROO 1.1.4, но даже если я заменю полный сгенерированный roo файл menue.jspx на пример (с легким дополнением) из Dojo / Dijit Hompage, он не заменяет оформленные div меню с меню.

вот так это выглядит

how it look

вот так должно выглядеть:

how shoul look

Мое измененное menu.jspx

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:menu="urn:jsptagdir:/WEB-INF/tags/menu"
    xmlns:sec="http://www.springframework.org/security/tags" 
    version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8" />
    <jsp:output omit-xml-declaration="yes" />

    <script type="text/javascript">
            dojo.require("dijit.MenuBar");
            dojo.require("dijit.PopupMenuBarItem");
            dojo.require("dijit.Menu");
            dojo.require("dijit.MenuItem");
            dojo.require("dijit.PopupMenuItem");
        </script>   
    </head>

        <div dojoType="dijit.MenuBar" id="navMenu">
            <div dojoType="dijit.PopupMenuBarItem">
                <span>
                    File
                </span>
                <div dojoType="dijit.Menu" id="fileMenu">
                    <div dojoType="dijit.MenuItem" onClick="alert('file 1')">
                        File #1
                    </div>
                    <div dojoType="dijit.MenuItem" onClick="alert('file 2')">
                        File #2
                    </div>
                </div>
            </div>
            <div dojoType="dijit.PopupMenuBarItem">
                <span>
                    Edit
                </span>
                <div dojoType="dijit.Menu" id="editMenu">
                    <div dojoType="dijit.MenuItem" onClick="alert('edit 1')">
                        Edit #1
                    </div>
                    <div dojoType="dijit.MenuItem" onClick="alert('edit 2')">
                        Edit #2
                    </div>
                </div>
            </div>
        </div>
</jsp:root>

Кто-нибудь может дать мне подсказку, что я делаю неправильно? (Я знаю, что сделать меню программно, но я хочу сделать это декларативно.)


Заголовок HTML выглядит так:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=8" />    

    ...
    <script type="text/javascript">var djConfig = {parseOnLoad: false, isDebug: false, locale: '${fn:toLowerCase(userLocale)}'};</script>

    <script src="${dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
    <script src="${spring_url}" type="text/javascript"><!-- /required for FF3 and Opera --></script>
    <script src="${spring_dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
    <script language="JavaScript" type="text/javascript">dojo.require("dojo.parser");</script>      


    <spring:message code="application_name" var="app_name"/>
    <title><spring:message code="welcome_h3" arguments="${app_name}" /></title>
</head>

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Я ничего не знаю о Spring Roo, так что, может быть, я говорю что-то очень глупое здесь ...

Этот menu.jspx компилируется в некоторый статический html? Если это так, вы можете указать Dojo проанализировать вашу начальную страницу, просто установив для parseOnLoad значение true в djConfig

var djConfig = {parseOnLoad: true, ...}

(в этом случае не требуется dojo.parser).

С другой стороны, если этот шаблон вставлен динамически, вам нужно будет вызвать dojo.parser.parse () корневого узла navMenu. Кажется, вы этого требуете, но я не понимаю, где это называется.

0 голосов
/ 06 июня 2012

Я должен был использовать: { dojo.addOnLoad (функция () { dojo.parser.parse (); }); }

вместо parseOnLoad: true

...