巧用spring配置常量

原创 2007年09月30日 13:39:00
有一些常量数据类型,比如货币,省份,转帐类型,等等。我们程序里都是用他们的代码进行运算的,但在页面显示的时候只能用他的名称显示给用户看。

  因此有下面特点:

   1有键值对,
   2不经常变化(支持偶尔有变化),
   3常用在页面做下拉选择,
   4在编辑页面的时候此选择项又必须默认选中,
   5键值关系固定。

  碰到这种情况,有很多解决方法。比如可以在页面硬编码,把每个常量一一在页面写死,这样做的后果是代码很多,如果多个页面都包含此常量那么增加了维护的难度,另外一种是使用<fmt:messag/>+属性文件来处理,虽然有所改善,但不能使用<c:if>测试和比较。下面我推荐一种方法,希望能对大家有所帮助。实现步骤如下:

  1、 写一个公用工具类,所有的属性通过Spring启动时候注入

public class MyConstantUtils {

public static IBPConstantUtils obj;
public IBPConstantUtils (String string) {
obj = this;
}
/**
* 货币类型键值对 Spring启动的时候注入
*/
public Map currTypes;
public Map getCurrTypes() {
return currTypes;
}
public void setCurrTypes(Map currTypes) {
this.currTypes = currTypes;
}
//其他常量……
}

  2、 配置文件web-xxx.xml,建议用一个单独的文件来配置常量。

<!-- 在配置文件中配置常量 -->
<bean id="currTypes" class="java.util.HashMap">
<constructor-arg>
<map>
<entry key="USD">
<value>美元</value>
</entry>
<entry key="HKD">
<value>港元</value>
</entry>
<entry key="EUR">
<value>欧元</value>
</entry>
<entry key="JPY">
<value>日元</value>
</entry>
<entry key="AUD">
<value>AUD</value>
</entry>
<entry key="RMB">
<value>人民币</value>
</entry>
</map>
</constructor-arg>
</bean>
<bean id="toolsUtils" class="com.xyz.util.MyConstantUtils ">
<constructor-arg>
<value>开始初始化工具类对象</value>
</constructor-arg>
<!-- 将常量注入单例对象中 -->
<property name="currTypes">
<ref bean="currTypes"/>
</property>
</bean>

  3、在jsp中,由于我们用的是springMVC,一般定义一个包含一些常用标签的jsp,如文件taglib.jsp:

<!-- taglibs.jsp -->
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<% request.setAttribute("MyConstantUtils",com.xyz.util.MyConstantUtils.obj); %>

  在上面的jsp中随便将我们的静态对象保存在request中,在其他jsp文件中include进来即可使用我们在配置文件中的常量,如下面:

<%@include file="taglibs.jsp"%>
………
<tr align="center">
<td height="30" align="left">
<div align="right">币种*</div>
</td>
<td width="78%" height="30" align="left">
<select name="currType">
<c:forEach items="${MyConstantUtils.currTypes}"var="currType">
<option value='<c:outvalue="${currType.key}"/>'<c:iftest='${currType.key == "RMB"}'>selected</c:if>><c:out
value="${currType.value}"/></option>
</c:forEach>
</select>
</td>
</tr>
……………….

  相对使用 <fmt:messag/>+属性文件 有下面好处:

   1、可以遍历所有的选项,也可以不需要遍历,即可只取出某一个。例如当在查询列表中从后台传来的是货币代码,那么直接取出显示:
<td><c:out value="${MyConstantUtils.currTypes[dep.currType]}"/></td>
   2、回显时可以<c:if>测试被选中的选项,如上面的代码将 RMB改为变量即可
   3、不需要专门的读取解析配置文件
   4、类和jsp中都可以方便使用
   5、可扩展性好,虽然是常量但也有可能变化,如增加一个新的货币的时候,只修改配置文件即可,jsp不用修改
   6、使得jsp代码更加简洁

  缺点时:不完全支持国际化 

相关文章推荐

Struts2的常量配置

  • 2013年04月20日 15:28
  • 99KB
  • 下载

爱测未来开发-巧用模板引擎编写基于参数配置文件的HTTP接口测试工具

最近接到一个需求,希望提供一款基于读取用户配置参数文件的,使用方法灵活的HTTP接口测试工具。         大体的需求有如下,用户希望能通过一个简单的txt配置文件,控制整个http接口业务的流...

巧用Salt,实现CMDB配置自动发现

随着互联网+新形势的发展,越来越多的企业步入双态(稳敏双态)IT时代,信息化环境越来越复杂,既有IOE三层架构,也有VCE、Openstack等云虚拟化架构和互联网化的分布式大数据架构。所以,企业急需...

Spring为属性注入某个类的常量或方法的返回值

spring提供了filed的值注入和method的返回值注入。 1、Field值的注入 filed值注入需要使用org.springframework.beans.factory.config....
  • viproc
  • viproc
  • 2012年05月31日 10:14
  • 1990

Thinkphp3.1.3源码分析(5)模版“常量”配置

在配置文件中设置模版替换参数的时候,会出现常量没有被解析的情况。 比如GROUP_NAME就不能在Conf/config.php里使用,因为在调用config.php的时候,还没有定义GROUP_N...

Struts2.xml文件中的常量、全局错误的配置及相关动态方法的调用

问题!Struts2.xml文件中的常量有哪些,Struts2的处理过程,如何自动更新配置文件、全局错误的配置及相关动态方法的调用和方式,表单请求参数数据通过拦截器如何到实体类 1.Struts2的...
  • Mr_li13
  • Mr_li13
  • 2015年10月25日 19:16
  • 1086

JAVA SSH ----Struts常量配置

Struts常量配置(struts_constants.xml)
  • oy_Miss
  • oy_Miss
  • 2016年10月27日 11:39
  • 113

struts的常量配置

Struts2配置精要之常量constant配置详解(包括零配置Convention 的常量) 这是目前为止收集的struts.xml中比较常用的常量值,包括现在的最新版本struts2.3.4...

Tensorflow 入门一 (安装配置,会话控制,变量常量,传入值)

Tensorflow: TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,主要是深度神经网络模型。 也是一时兴起开始学习这玩意,走到哪,博客写到哪里,全当记录。 ...

struts2.x的常量配置,动态方法调用,通配符,拦截器,ValueStack和标签

我的struts1.x学的不错.对struts2.x的学习就很有信心了.不过大家要知道,struts1.x和struts2.x是两回事 哦.struts2.x和struts1.x完全没有关系.也不是什...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:巧用spring配置常量
举报原因:
原因补充:

(最多只允许输入30个字)