我们经常会遇到这样一种情形:要将从action里取出的list里的对象数据输出到页面上时,有些值是不能原样输出的。比如,状态或性别之类的属性,我们一般都会用0、1之类的常量值进行标识。CRUD是方便,但是如果原样输出,用户能看得明白吗?(列表中,性别一栏张三的输出值为“0”,李四的输出值为“1”,你问客户他们谁是男谁是女?!他不跟你急,算你走运!
)
这种现象的解决办法就是在页面上进行输出前,先对初始值做一下转换后再输出给用户。采用struts2的iterate标签可以很方便的在页面上进行迭代,如:
<table>
<tr>
<td>序列</td>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
</tr>
<s:if test="users!=null">
<s:iterator value="users" status="stat">
<tr>
<td><s:property value="#stat.index"/></td>
<td><s:property value="name"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="age"/></td>
</tr>
</s:iterator>
</s:if>
</table>
这里的users是一个list类型,跌代时每一个当前对象就是一个user类型的对象。它有name,sex,age三个属性。通过<s:property value="propertyname"/>的方式即可这些属性值跌代输出。
但是这里的sex属性的数据类型我是用char(1)表示的,也就是说,在数据库里我用0表示性别为男,用1表示性别为女。问题来了,如果采用上以上代码输出就会出现文章开头所说的在性别一栏出现用户看不懂含义的值0或1。
其实struts2是有解决之道的,就是为每个跌代中的当前对象用id加以引用,再结合<s:if/>和<s:else>进行判断就可以实现。这里表扬一个sturts2.<s:else/>可是期盼已久的好东东了。struts1就从来没有满足过。
具体代码如下:
<s:if test="users!=null">
<s:iterator value="users" status="stat" id="u">
<tr>
<td><s:property value="#stat.index"/></td>
<td><s:property value="#u.name"/></td>
<td><s:if test="#u.sex==0">男</s:if><s:else>女</s:else></td>
<td><s:property value="#u.age"/></td>
</tr>
</s:iterator>
</s:if>
上面这段代码有两个重点:
1、迭代时要在<s:iterator/>加上id,便于后面引用。
2、引用当前对象时要在id名前加上"#",如代码中的"#u.name" 即代码当前对象的name属性
另外,我也发现,明明sex属性在javabean里是string类型,在数据在里是char类型。但在这里输出时不能对它的值加''号。如果写成<s:if test="#u.sex=='0'">就不行。只能写成<s:if test="#u.sex==0">。怎么看都象是在对一个integer类型的属性进行取值。这一点我没搞明白。有知道朋友可以留言以告之。先谢谢了!
这是我在javaeye的第一篇文章。自我鼓励一下!!
分享到:
相关推荐
在`PropertyTag`中,`doStartTag()`方法会初始化一些属性,如属性路径、转换器等,而`doEndTag()`方法则负责根据属性路径查找值,并将其输出到页面。这个过程中,OGNL表达式起到了关键作用,它能解析复杂的属性路径...
Struts 2 是一个流行的Java Web开发框架,它提供了一系列丰富的标签库,简化了JSP页面的编写。这些标签使得开发者能够更方便地处理表单、数据展示和用户交互。以下是一些重要的Struts 2 S标签的详细介绍: 1. **s:a...
- 在显示日期和时间的场景下,`<bean:format>`能方便地对日期和时间进行格式化输出,提供良好的用户体验。 5. **最佳实践** - 使用Bean标签时,应确保Bean对象已经被正确地初始化并放入相应的作用域(如session或...
- **Struts2**: 使用OGNL进行类型转换,为基本和常用对象提供了转换器。Struts2的类型转换机制更为灵活且易于配置。 #### 9. 数据校验机制 - **Struts1**: 支持在`ActionForm`的`validate`方法中手动校验数据,...
在Struts2的配置文件中,可以通过`<interceptor-stack>`标签定义拦截器栈,然后在`<action>`标签中引用这些拦截器栈。 例如: ```xml <param name="excludeParams">dojo\..*,^struts\..* ``` ...
要在JSP页面中使用Struts2的标签库,需要在页面中导入标签库,使用`<%@ taglib %>`指令。Struts2的表单标签通常用于创建HTML表单,如`<s:form>`。`ActionSupport`类实现了`Action`接口和`ValidationAware`等接口,...
7. **展示在页面上**:最后,在Struts2的视图层(可能是JSP或其他模板引擎),只需要一个对应的图像标签,指向Action的URL,图表就会被显示出来。 这个示例项目是一个很好的学习资源,它能帮助初学者理解如何在实际...
- **Struts2 Action处理**:创建一个Struts2 Action类,处理用户的请求,调用上述步骤生成饼图,并将结果写入到HttpServletResponse的输出流中。 - **JSP页面展示**:在JSP页面上,通过`<img>`标签引用Action生成的...
在"struts上传文件及下载"的主题中,我们将深入探讨如何使用Struts2实现文件的上传与下载功能,以及如何将上传的文件存储到数据库并从数据库中检索用于下载。 1. **文件上传** - **Action配置**:首先,你需要创建...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...
SSH框架指的是Spring、Struts2、Hibernate这三种技术的集成使用,它们共同构成了一个强大的企业级应用程序开发平台。 - **Spring**:提供了一种轻量级的IoC容器,用于管理Bean的生命周期,支持AOP编程。 - **Struts...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...
- 在JSP页面中使用Struts2提供的标签库,需要通过`taglib`指令进行导入,具体命令为`<%@ taglib uri="/struts-tags" prefix="s" %>` 6. **Struts2表单标签** - 表单标签为`<s:form>`,这是一个强大的表单标签,...
要在JSP页面中使用Struts2提供的标签库,需要在页面中使用`taglib`编译指令导入标签库,例如:`<%@ taglib prefix="s" uri="/struts-tags" %>` 6. **Struts2表单标签库** 在Struts2表单标签库中,表单标签为`...
- **性能优化**:Struts2在性能方面进行了优化,尤其是在高并发场景下的表现优于Struts1。 **12. Struts的常用标签库及用法** - **Struts HTML标签库**:提供了一系列用于表单生成的标签,例如`<html:form>`、`...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
141、使用useBean标志初始化BEAN时如何接受初始化参数 36 142、使用JSP如何获得客户浏览器的信息? 36 143、能象调用子程序一样调用JSP吗? 36 144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS...