在Struts2 API帮助文档中IteratorGeneratorTag类的说明找到如下例子
Example Three:
Generate an iterator with var attribute
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="4" separator="," var="myAtt" />
<%
Iterator i = (Iterator) pageContext.getAttribute("myAtt");
while(i.hasNext()) {
String s = (String) i.next(); %>
<%=s%> <br/>
<% }
%>
This generates an iterator and put it in the PageContext under the key as specified by the var attribute.
后copy上面整段代码,执行后,页面显示错误信息,报java.lang.NullPointerException。
改代码,如下:
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="4" separator="," var="myAtt" />
<%
Iterator i = (Iterator) pageContext.getAttribute("myAtt");
if(i == null) {%>
<h1>OH,My God!</h1>
<%}else{
while(i.hasNext()) {
String s = (String) i.next(); %>
<%=s%> <br/>
<% }
}%>
再次执行,结果显示:OH,My God!
从结果可知,pageContext.getAttribute("myAtt");获取不到对象,把它改为pageContext.getAttribute("myAtt",PageContext.REQUEST_SCOPE);即可,结果显示:
aaa
bbb
ccc
ddd
PS:
1.在Debug的过程中也未发现pageContext的attributes下有myAtt的key,而在value stack中可以找到。
2.Struts2中的request是org.apache.struts2.dispatcher.StrutsRequestWrapper。
Method Summary
Object getAttribute(String s)
Gets the object, looking in the value stack if not found
上面不知官方的例子为何不行?如果你知道,请不吝赐教!谢谢!
有空的话,欢迎到
红番薯逛逛
分享到:
相关推荐
2. 统一资源定位:在使用Action或者Controller进行重定向或转发时,使用${pageContext.request.contextPath} 可以避免硬编码应用的绝对路径,使得代码更具有可移植性。 3. 与框架集成:许多Web框架如Struts、Spring...
然而,在JavaScript代码中直接使用${pageContext.request.contextPath}会导致一些问题,因为这并不是JavaScript语法的一部分,而是JSP EL的特性。 **问题解析:** 在描述中提到了两种不同的使用方式: **方式一:...
UserAction userAction = (UserAction) pageContext.getAttribute("userAction", PageContext.ACTION_SCOPE); if (userAction != null) { username = userAction.getUsername(); } } // 其他方法... } ``` ...
${pageContext.request.contextPath}/checkcode.jsp"/> 另外在web.xml中配置验证码类的加载: <servlet-name>CheckCodeImage <servlet-class>com.netshop.common.util.CheckCodeImage</servlet-class> ...
${pageScope.name} = pageContext.getAttribute("name"); 9. requestScope:把 request 范围中的 name(属性名)和 value(属性值)进行映射: * request.setAttribute("name","jack"); ${requestScope.name} = ...
在此部分,使用 `pageContext.getAttribute()` 方法从 `application` 范围内获取之前存储的 `"str"` 属性,并将其打印出来。 3. **PageContext提供的管理方法** `PageContext` 类还提供了其他一些方法来管理不同...
例如,可以使用${pageContext.servletContext}来获取当前页面的上下文环境,通过${pageContext.session}获取当前用户会话,使用${pageContext.request}来操作请求,以及${pageContext.response}来操作响应。...
${pageContext.request.contextPath}/UserAction_login" method="post"> 用户名:<input type="text" name="user_code"><br/> 密码:<input type="password" name="user_password"><br/> 提交"> ``` 在...
### Struts EC标签的使用详解 #### 一、概述 Struts框架是Java Web开发中的一个强大工具,它提供了一套完整的MVC(Model-View-Controller)模式实现方案,帮助开发者构建出结构清晰、易于维护的应用程序。而EC标签...
String myVarValue = (String) pageContext.getAttribute("myVar", PageContext.SESSION_SCOPE); out.println("myVar 的值为: " + myVarValue + " "); %> ``` #### 四、HTMLTags ##### 1. html:base 用于...
2. **转换和类型检查**:PageContext提供了强制类型转换的方法,如`pageContext.getAttribute("name", Class type)`,确保获取的属性是期望的类型。 3. **写入响应**:通过`pageContext.getOut()` 方法,可以获取到...
PageContext pageContext = (PageContext) pageContext.getAttribute(PageContext.PAGE_CONTEXT); Object attribute = pageContext.getAttribute("attributeName", PageContext.SESSION_SCOPE); ``` 9.Page对象类...
这里使用`${pageContext.request.contextPath}`动态生成各个链接的完整URL,确保链接总是指向正确的上下文路径。 通过上述分析,我们可以看到Struts2框架的强大之处在于它能够清晰地组织业务逻辑,简化Web应用的...
通过熟练掌握Struts标签及其与EL的结合使用,开发者可以编写出更加整洁、高效的JSP页面,减少Java脚本的使用,提升应用程序的可维护性和可扩展性。在实际项目中,合理运用Struts标签可以大大提高开发效率,同时降低...
String value = (String) pageContext.getAttribute("jSession", PageContext.PAGE_SCOPE).getValue(); out.println("这个cookie的名称是" + name + ",值为" + value + "。 "); %> ``` #### 总结 Struts...
User user = (User) pageContext.getRequest().getAttribute(username); if (user != null) { pageContext.getOut().print("用户名:" + user.getName() + ", 邮箱:" + user.getEmail()); } return SKIP_BODY;...
pageContext.setAttribute("user", user); return SKIP_BODY; } } ``` - 创建 TLD 文件 `mytags.tld`: ```xml <tlib-version>1.0 <jsp-version>1.2 <short-name>mytags <uri>/mytags <name>mytag ...
总结,Struts2的自定义标签实例涉及到以下几个关键步骤:创建标签实现类、定义标签描述符、在JSP中使用标签以及处理标签逻辑。通过这种方式,我们可以构建强大的视图层组件,使代码更易于理解和维护,同时提升应用的...
pageContext.setAttribute("result", "自定义标签的输出"); return EVAL_PAGE; } } ``` 3. **配置Struts2**: 在Struts2的配置文件(通常是`struts.xml`)中,添加标签库的配置,让框架知道如何找到并使用这些...