struts标签<bean:header>不能正常使用

<body>



测试头文件









<%java.util.Enumeration names=((HttpServletRequest)request).getHeaderNames();

%>










<%

while(names.hasMoreElements())

{

String name=(String)names.nextElement();

}


%>

<%=name %>

<%String name1="fadsfasdf"; %>

<%=name1 %>




heaser nameheaser value




</body>



我用的是struts1.2 的,这里使用<bean:header>标签,在上面的<%=name%>处提示name“不能 解决的”的错误,我有设置了:<%String name1="fadsfasdf"; %>

<%=name1 %>

这里name1 却可以输出,同样是String类型,这么会出现这种情况呢??请大家 帮我看看,有奖励的 !!



谢谢

首先是你这个段代码
[code="java"]<%
while(names.hasMoreElements())
{
String name=(String)names.nextElement();
}
%> [/code]
由于你把String name定义在while的代码块内,这样name就为一个局部变量,在while代码块以外的地方我们无法调用name属性,应该改为:
[code="java"]<%! String name; %>
<%
while (names.hasMoreElements()) {
name = (String) names.nextElement();
}
%>[/code]
先用<%! %>来声明一个变量,这样变量就为全局的了。

再有楼主的循环与输出也有问题,你是先循环,全部循环完才输出,这样你输出的name只能有一个值,也就是你names枚举集合中最后一个值,如果想逐一输出可以改为:
[code="java"]<%! String name; %>
<%
while (names.hasMoreElements()) {
name = (String) names.nextElement();
out.println(name);
}
%>[/code]
这样,循环一次输出一次,就能把在集合中所有的值输出出来。

不知道楼主想要的是不是这样的效果