JSP 自定义标记属性的默认值
为自定义 JSP 标记定义属性时,是否可以指定默认值? attribute
指令没有默认值属性。目前我正在凑合:
<%@ attribute name="myAttr" required="false" type="java.lang.String" %>
<c:if test="${empty myAttr}" >
<c:set var="myAttr" value="defaultValue" />
</c:if>
有没有更好的方法?
When defining an attribute for a custom JSP tag, is it possible to specify a default value? The attribute
directive doesn't have a default value attribute. Currently I'm making do with:
<%@ attribute name="myAttr" required="false" type="java.lang.String" %>
<c:if test="${empty myAttr}" >
<c:set var="myAttr" value="defaultValue" />
</c:if>
Is there a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有一个更好的方法:
不需要 Java 或 tld 中的自定义标签。只是普通的 JSP EL 和条件运算符。
在我看来,它比旧的更短、更干净:
There is a better way:
No need for custom tag in Java nor tld. Just plain JSP EL and conditional operator.
In my opinion it is shorter and cleaner than old:
所以我无法找到一种方法将其添加到
attribute
指令本身;该指令似乎不支持此功能。不过,我能够创建一个封装...
逻辑的标记。我必须用 Java 编写标签,因为(据我所知)没有办法使用属性值作为变量名。首先,我将标记文件编写为 Java 类:
DefaultTag.java
然后我制作了一个
tld
文件:utils.tld:
然后我制作了一个使用此标签的自定义标签:
defaultTest.tag
之后,我创建了一个页面来测试刚刚创建的标签:
tagTest.jsp
这给了我:
So I wasn't able to figure out a way to add this to the
attribute
directive itself; it appears that the directive does not support this functionality. I was, however, able to create a tag that encapsulates the<c:if>...</c:if>
logic. I had to write the tag in Java since there is no way (that I know of) to use an attribute value as a variable name.First I wrote the tag file as a Java class:
DefaultTag.java
Then I made a
tld
file:utils.tld:
Then I made a custom tag that uses this tag:
defaultTest.tag
After that I made a page to test the tag I just created:
tagTest.jsp
And that gave me: