如何使用指令'name-from-attribute'

时间:2014-02-23 00:55:48

标签: jsp java-ee

我是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" %>
....

1 个答案:

答案 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

注意:我指的是OReilly Java Server Pages book