在HTML表单中,可以通过在按钮上定义“ disabled”属性(具有任何值)来禁用按钮:
<button name="btn1" disabled="disabled">Hello</button>
如果要启用按钮,则该属性不应存在,因为没有定义的值可以设置为Disabled属性,否则将使按钮处于启用状态。
当我想在使用JSP文档(jspx)时启用/禁用按钮时,这给我带来了问题。由于JSP文档必须是格式正确的XML文档,因此我看不到有条件地包含此属性的任何方式,因为以下内容不合法:
<button name="btn1" <%= (isDisabled) ? "disabled" : "" %/> >Hello</button>
虽然我可以使用JSTL if标签复制标签两次,以获得预期的效果,但在我的特定情况下,我在按钮上声明了15个以上的属性(很多AJAX的javascript事件处理程序属性),因此复制标签将使JSP很乱。
如何在不牺牲JSP可读性的情况下解决此问题?是否有任何可通过处理输出DOM来向父级添加属性的自定义标签?
我使用具有动态属性的自定义JSP标记。您可以这样使用它:
<util:element elementName="button" name="btn1" disabled="$(isDisabled ? 'disabled' : '')"/>
基本上,此标签的作用是生成一个带有elementName的XML元素,并将所有属性都放入标签中,但跳过空的属性。
标签本身很容易实现,我的实现只有44行。