用struts2标签对初始值进行转换输出

2024-02-11 17:58

本文主要是介绍用struts2标签对初始值进行转换输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们经常会遇到这样一种情形:要将从action里取出的list里的对象数据输出到页面上时,有些值是不能原样输出的。比如,状态或性别之类的属性,我们一般都会用0、1之类的常量值进行标识。CRUD是方便,但是如果原样输出,用户能看得明白吗?(列表中,性别一栏张三的输出值为“0”,李四的输出值为“1”,你问客户他们谁是男谁是女?!他不跟你急,算你走运! )

这种现象的解决办法就是在页面上进行输出前,先对初始值做一下转换后再输出给用户。采用struts2的iterate标签可以很方便的在页面上进行迭代,如:

Java代码 复制代码
  1.        
  2. <table>   
  3.       <tr>   
  4.         <td>序列</td>   
  5.         <td>姓名</td>   
  6.         <td>性别</td>   
  7.         <td>年龄</td>   
  8.       </tr>   
  9.       <s:if test="users!=null">   
  10.       <s:iterator value="users" status="stat">   
  11.       <tr>   
  12.         <td><s:property value="#stat.index"/></td>   
  13.         <td><s:property value="name"/></td>   
  14.         <td><s:property value="sex"/></td>   
  15.         <td><s:property value="age"/></td>   
  16.       </tr>   
  17.       </s:iterator>   
  18.       </s:if>   
  19.     </table>  
    
<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就从来没有满足过。
具体代码如下:

Java代码 复制代码
  1. <s:if test="users!=null">   
  2.     <s:iterator value="users" status="stat" id="u">   
  3.       <tr>   
  4.         <td><s:property value="#stat.index"/></td>   
  5.         <td><s:property value="#u.name"/></td>   
  6.         <td><s:if test="#u.sex==0">男</s:if><s:else>女</s:else></td>   
  7.         <td><s:property value="#u.age"/></td>   
  8.       </tr>   
  9.     </s:iterator>   
  10. </s:if>  
<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类型的属性进行取值。这一点我没搞明白。有知道朋友可以留言以告之。先谢谢了!

 

http://ll-feng.javaeye.com/blog/216129

这篇关于用struts2标签对初始值进行转换输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700461

相关文章

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t