【问题标题】:Spring Roo with Dojo/Dijit declative menu bar?带有 Dojo/Dijit 装饰性菜单栏的 Spring Roo?
【发布时间】:2011-07-29 08:31:11
【问题描述】:

我正在尝试将 Dojo/Dijit declarative menu 与 Spring ROO 1.1.4 一起使用,但即使我将完整的 roo 生成的 menue.jspx 替换为来自 Dojo/Dijit 主页的示例(经过轻度添加),它也不会替换用菜单装饰菜单 div。

原来是这样的

应该是这样的:

我修改后的 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>

【问题讨论】:

  • 你在哪里包含了dojo script 标签? Dojo 什么时候应该解析这个?
  • @missingno:我添加了html头,你想知道吗?

标签: dojo spring-roo


【解决方案1】:

我对Spring Roo一无所知,所以也许我在这里说的是非常愚蠢的事情......

那个 menu.jspx 是编译成一些静态的 html 吗?如果是这种情况,您可以告诉 Dojo 解析您的初始页面,只需在 djConfig 上将 parseOnLoad 设置为 true

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

(在这种情况下不需要 dojo.parser)。

另一方面,如果该模板是动态插入的,您将需要自己在根 'navMenu' 节点上调用 dojo.parser.parse()。您似乎需要它,但我看不到它在哪里被调用。

【讨论】:

  • 我会试一试 - 顺便说一句:它以静态方式工作:menu.jspx 和一些其他 jspx 文件是一个文件,被渲染并与 Apache Tiles 放在一起,然后全部发送到浏览器在一个静态文件中
  • 使用 parseOnLoad 的提示很棒:我会接受你的回答,但请添加一些短语以明确需要更改行 '' 在文件 load-script.tagxparseOnLoad: true 中!
【解决方案2】:

我不得不使用: { dojo.addOnLoad(函数(){ dojo.parser.parse(); }); }

而不是 parseOnLoad:true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    相关资源
    最近更新 更多