小编典典

使用JSP文档(JSPX)有条件地在元素上设置属性

jsp

在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来向父级添加属性的自定义标签?


阅读 376

收藏
2020-06-08

共1个答案

小编典典

我使用具有动态属性的自定义JSP标记。您可以这样使用它:

<util:element elementName="button" name="btn1" disabled="$(isDisabled ? 'disabled' : '')"/>

基本上,此标签的作用是生成一个带有elementName的XML元素,并将所有属性都放入标签中,但跳过空的属性。

标签本身很容易实现,我的实现只有44行。

2020-06-08