在事件触发时使用dojo和HTML冲突的Spring.addDecoration

时间:2011-11-17 15:20:31

标签: java spring-mvc dojo

我正在使用roo生成.jspx个文件的dojo小部件。以下是我的代码部分

<form:select name="halfOrFulDay" id="_monitoringType_id${rowCounter.count}" Style="width:120px" onchange="someProcess()">
   <form:option value="--Select--" selected="selected">--Select--</option>
   <form:option value="Half Day" >Half Day</option>
   <form:option value="Full Day" >Full Day</option>
   <form:option value="None" >None</option>
</form:select>
<script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_monitoringType_id${rowCounter.count}', widgetType: 'dijit.form.FilteringSelect', widgetAttrs : {promptMessage: 'In Complete Data',hasDownArrow : true}})); </script>

我的问题是,一旦我应用Spring.addDecoration(),我就无法触发 onchange 事件。我可以在 widgetAttrs 中设置任何属性吗?类似的东西:

widgetAttrs:{ onchange:someProcess ,promptMessage:'在完整数据中',hasDownArrow:true}

1 个答案:

答案 0 :(得分:3)

dijit.form.FilteringSelect不是常规的dom节点。这是一个dijit小部件...... 它的onchange事件附加到小部件模板的特定dom节点,并附加到小部件的扩展点“onChange”(注意大写C)。

你的榜样应该是:

<script type="text/javascript">
    Spring.addDecoration(new Spring.ElementDecoration({
        elementId : '_monitoringType_id${rowCounter.count}', 
        widgetType: 'dijit.form.FilteringSelect', 
        widgetAttrs : {
            promptMessage: 'In Complete Data',
            hasDownArrow : true,
            onChange : function(evt) {
               // Your event code here
            }
        }
    })); 
</script>

你应该在这里阅读:http://dojotoolkit.org/reference-guide/quickstart/writingWidgets.html#creating-extension-points

对于您通过spring使用的任何小部件,您可以在此处找到相应的文档:http://dojotoolkit.org/api/

只需展开“dijit”树节点,然后选择您的小部件,然后在“事件摘要”部分查看它支持的自定义事件列表。