我在将 DOJO javascript 库与 Spring 框架集成时遇到了一些问题。具体来说,问题是如何验证文本区域和单选按钮。我正在使用 Spring-Js 库来装饰标准的 html 表单元素,例如
<form:input path="actionDescription" id="actionDescriptionId"/>
<script type="text/javascript">
Spring.addDecoration(new Spring.ElementDecoration({
elementId : "actionDescriptionId",
widgetType : "dijit.form.SimpleTextarea",
widgetAttrs : { disabled : false,
required: true,
rows: "4",
cols: "60",
placeHolder: "Enter description of fault",
style: "width:auto;height:50px;"
}}));
</script>
我一直在 FireFox 中开发(使用 Firebug),我现在才意识到(在查看 Dojo/Dijit 文档之后)dijit.form.SimpleTextArea 不支持“必需”属性。我以前从未检查过它,因为它在 FireFox 中一切正常。我有一个表单按钮,单击该按钮将验证所有装饰元素,并且在 Firefox 中,包括文本区域和单选按钮在内的所有组件都会弹出一个漂亮的工具提示,指示该字段是必需的。使用的代码行是这样的:
<script type="text/javascript">
Spring.addDecoration(
new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));
</script>
这很棒,因为它会阻止表单提交,直到完成所有必填字段。单选按钮弹出一个很好的消息说用户必须选择一个选项,并且文本区域弹出一个很好的消息告诉用户输入一些东西。但是,它在 Safari 或 IE 中不起作用。验证不适用于这些其他浏览器上的文本区域和单选按钮,因此服务器端验证用于将用户重定向回表单。尽管这可行,但我更喜欢首先阻止表单提交并具有一致的错误报告,而不是客户端和服务器端错误消息的混合。
当 dijit textarea 组件不应该支持“必需”属性时,我真的很难理解为什么它在 firefox 中工作?我喜欢使用 spring-js 来增强基本组件的想法,但我真的不明白如何在 FireFox 中使用 digit.form.SimpleTextarea 装饰元素并根据 digit 文档进行验证,但没有任何支持验证?
我想知道是否有其他使用 Spring-Js/Spring-DOJO 集成的 Spring 开发人员遇到过这种行为,以及他们是否对它的工作原理有更深入的了解。我真正想要的是在包括 IE 在内的所有浏览器中验证文本区域。