`
yourenyouyu2008
  • 浏览: 286808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

seam中Enmu的使用

    博客分类:
  • seam
阅读更多

enmu基本知识

//简单的枚举

public enum Planet {
    MERCURY ,
    VENUS

}

//复杂的枚举

public enum Planet {
    MERCURY (3.303e+23, 2.4397e6),
    VENUS   (4.869e+24, 6.0518e6)

private final double mass;   // in kilograms
    private final double radius; // in meters

//MERCURY (3.303e+23, 2.4397e6)里面的参数与构造函数对应

Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }

public double getmass()   { return mass; }
    public double getradius() { return radius; }

}

可以使用枚举的具体方法

Planet.MERCURY.getmass()

Planet.MERCURY.getradius()     

在jsf页面使用Enmu

<h:selectOneMenu id="CustomerStatusList" value="#{customerAccountsAction.status}">
       <s:selectItems value="#{customerStatusList}" var="_s" label="#{_s.label}" noSelectionLabel="" />
       <s:convertEnum />
      </h:selectOneMenu>

 

 @Factory
 public CustomerAccountStatus[] getCustomerStatusList() {
  return CustomerAccountStatus.values();//.values()是Enmu的公共方法,用于返回全部枚举值。
 }

 

package org.manaty.model.party.customerAccount;
//枚举类定义
public enum CustomerAccountStatus {
    ACTIVE("Actif"),LOCKED("Verrouill"),CLOSED("Ferm");

 private String label;//对应于ACTIVE("Actif")括号里的Actif

    CustomerAccountStatus(String label) {
  this.label = label;
 }

 public String getLabel() {
  return label;
 }
}

目前存在的问题是label="#{_s.label}"没法国际化,如果要在列表中国际化就应该 在getCustomerStatusList()

方法中修改枚举的label值,如此给CustomerAccountStatus增加setLabel方法,getCustomerStatusList()方法中循环 CustomerAccountStatus.values(),取出枚举值的name,然后再去资源文件中获取对应的国际化label。、

问题在于这样就修改了枚举值本身的内容,而枚举值的含义是相当于常量,常量是不可以改变的。

最新解决办法

不用label来显示enmu,直接用enmu.name()来作为key去资源文件中取对应的国际化

<h:selectOneMenu id="CustomerStatusList" value="#{customerAccountsAction.status}">
       <s:selectItems value="#{customerStatusList}" var="_s" label="#{messages[_s.name()]} " noSelectionLabel="" />
       <s:convertEnum />
      </h:selectOneMenu>

为什么使用_s.name()而不使用 _s.label呢?

因为label是特定enmu的方法,,而不是所有enmu有的方法,这样_s.label就不通用了。

补充:也可以作为一个约定来使用label,让每个enmu增加label方法,label相当于起了个别名,表达式的意思

更明白些,另外name表达的意思比较简短,容易重复。

 

System.out.println(Status.CLOSED);---CLOSED 输出枚举的名字
System.out.println(Status.CLOSED.name());--CLOSED 输出枚举的名字
System.out.println(Status.CLOSED.getLabel());--test.closed 输出枚举的label

 

直接在页面内使用枚举

public enum CycleType {
    MONTH("Days of Month"),WEEK("Days of Week");
    private String name;
    CycleType(String name){
        this.name=name;
    }
    public String toString() {
        return this.name;
    }
}

<a4j:outputPanel id="week"
   rendered="#{calendarParam.cycleBasis == 'WEEK'}">

页面内的枚举比较使用的是【枚举名称】而不是toString()的名称

 

1
0
分享到:
评论

相关推荐

    SEAM 中文开发指南

    - **使用“推”风格的MVC**:展示了如何使用 SEAM 的推送机制来更新数据。 #### 三、使用Seam-gen快速启动 - **准备活动**:设置开发环境。 - **建立一个新的Eclipse项目**:通过 Eclipse 创建 SEAM 项目。 - **...

    jboss seam 中文文档集合

    这个文档集合包含了对Seam及其相关技术的详尽介绍,帮助开发者深入了解并有效地使用Seam。 **1. Seam Reference** Seam Reference 提供了Seam框架的完整指南,包括英文版和中文版。中文版的Seam_2.0_Reference_zh_...

    JBOSS SEAM组件中文手册

    Seam的主要目标是减少开发中的样板代码,提高生产力,同时保持灵活性和可扩展性。 **二、Seam核心概念** 1. **组件(Components)**: Seam的核心是组件模型,它允许开发者定义和管理应用中的对象。组件可以是简单的...

    seam 中文文档 pdf

    seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。

    seam需要的jar包

    在这个“seam需要的jar包”压缩包中,包含了运行和开发Seam应用程序所需的各种库文件。 首先,Seam框架的核心依赖于JSF,这是Java EE中的一个用户界面组件框架,用于构建交互式Web应用。JSF提供了模型-视图-控制器...

    seam 中使用fckeditor 的点点滴滴

    本文将围绕“Seam框架中使用FCKeditor”的主题进行详细探讨,结合给出的标签“源码”和“工具”,我们将深入理解如何在Seam项目中集成并使用FCKeditor,以及相关的依赖库。 Seam是一个Java EE框架,它整合了JSF...

    jboss seam 中文文档

    - **工作原理**:深入探讨了示例中使用的 Seam 特性,如事件处理机制和页面流。 ##### 1.4 Seam 和 jBPM:待办事项列表示例 - **代码理解**:展示了如何集成 Seam 和 jBPM 这两个框架,实现一个简单的待办事项列表...

    seam in action 中文 english

    7. **国际化与本地化**:Seam支持多语言环境,对于中英文双语版本的书籍,这为开发者提供了跨越语言障碍的便利,帮助全球的开发者理解和使用Seam框架。 8. **测试支持**:Seam提供了一套完整的测试工具,包括单元...

    近两个星期seamtest的学习

    在源码层面,SeamTest提供了JUnit扩展,使得在JUnit测试类中可以直接使用Seam的服务和组件。例如,你可以直接注入需要测试的Seam bean,而无需通过繁琐的查找或依赖注入。此外,SeamTest还支持EJB和CDI(Contexts ...

    jboss seam 学习资料,seam in action和官方手册

    8. **Seam组件**:了解如Conversation、Transactions、邮件服务等Seam内置组件的使用方法。 9. **实时性与Ajax**:探索Seam如何实现实时更新和Ajax功能,提升用户体验。 ### Seam官方参考手册 Seam官方参考手册...

    使用 Maven 管理 Seam 项目

    每个开发者都可以在本地环境中使用相同的构建流程,而不会因为库版本不一致或缺失而导致问题。 总的来说,通过Maven管理Seam项目,可以有效地组织和自动化项目构建,减少手动配置的工作,提高开发效率。结合Seam的...

    为Seam做好准备

    Seam是一个Java EE集成框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Enterprise JavaBeans(EJB)3.0以及其他组件统一在一个简化开发的环境中。这篇博客的链接虽然无法直接访问,但我们可以...

    JSF项目中seam的配置

    完成上述基础配置后,开发者就能在任何支持JSF的容器中使用Seam了。不过,Seam还提供了对Ajax和EJB 3的支持,需要根据项目需求进行额外的配置。 接下来,我们来看看Seam中常见的注解: 1. **@Name**:用于标识Seam...

    jboss seam中文资料

    这份资料提供了丰富的示例代码和项目,通过这些实例,开发者可以深入理解Seam的工作原理以及如何在实际项目中应用它。这种方法能够确保理论与实践相结合,使学习过程更加高效。 #### 四、核心特性详解 - **组件模型...

    《SeamInAction》+《JbossSeam》+《官方中文指南》

    在实际开发中,开发者可以通过这些资源学习如何使用Seam进行组件注入、依赖管理、页面导航、事件处理等操作,同时掌握如何利用EJB进行业务逻辑处理,通过JPA进行数据持久化。此外,Seam还支持CDI,这使得开发者可以...

    Seam框架文档简述

    Seam鼓励使用Java 5的注解特性来配置应用,这种方式可以减少XML配置文件的数量,提高开发效率。 ##### 7. 增强的表达式语言 Seam提供了对标准EL(Expression Language)的扩展,称为JBoss EL。这种扩展允许在...

    Jboss Seam中文版

    6. **使用Seam工作空间管理的完整范例:IssueTracker**:介绍了一个问题追踪系统的实现过程,强调了Seam在多用户协作方面的优势。 7. **结合Seam和Hibernate的范例:Hibernate系统**:展示了一个利用Seam和Hibernate...

    jboss seam 2.0 中文手册

    整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。

Global site tag (gtag.js) - Google Analytics