我是JSP的新手。我读过的关于JSP的书, name-from-attribute 必须与别名一起使用。并且必须已将named属性声明为必需属性,并且不接受请求时间值。但是为什么我们首先需要从属性命名?有人能给我一个简单的例子来说明 name-from-attribute 的使用吗?
代码在这里:
....
<%@ attribute name="var" rtexprvalue="false" required="true" %>
<%@ variable name-from-attribute="var" alias="current"
variable-class="java.lang.Object" scope="NESTED" %>
....
答案 0 :(得分:1)
如果您有name-from-attribute
,那么在您使用自定义标记库执行操作的jsp页面中,您可以自由提供“任何变量名称”。例如 -
xyz.tag(版本1,不 name-from-attribute
)
....
<%@ attribute name="items" rtexprvalue="true" required="true" %>
<%@ variable name-given="current"
variable-class="java.lang.Object" scope="NESTED" %>
....
我的jsp页面看起来像这样 -
...
<%@ taglib prefix="my" tagdir="/WEB-INF/tags/mytags" %>
...
<my:xyz items="a,b,c,d,e">
<td>${current}</td>
...
如果您注意到上述内容,那么我们在标记文件中使用的任何变量名称(当前)都是硬编码的。如果名称发生变化,则会破坏您的jsp代码。
xyz.tag(版本1, name-from-attribute
)
....
<%@ attribute name="items" rtexprvalue="true" required="true" %>
<%@ attribute name="var" rtexprvalue="false" required="true" %>
<%@ variable name-from-attribute="var" alias="current"
variable-class="java.lang.Object" scope="NESTED" %>
....
我的jsp页面看起来像这样 -
...
<%@ taglib prefix="my" tagdir="/WEB-INF/tags/mytags" %>
...
<my:xyz items="a,b,c,d,e" var="anyName">
<td>${anyName}<</td>
...
基本上,标记文件中的name-from-attribute
告诉标记处理器从正在使用自定义标记(my:xyz
)的jsp文件中选择实际变量名称,在本例中为 anyName 强>