`

实现java提示信息模板功能

    博客分类:
  • JAVA
阅读更多

转载自:juel2.1.0源代码

 

最近在看些脚本语言,看到juel里面有个错误信息统一配置的功能,我记得以前在struts里见过,当时觉得这个功能很强大,现在想看下他是怎么实现的,就下载了源码看,发现其实很简单,基本用的都是java原生的函数来完成。不过里面用到了java1.5的新特性。好了先发下代码看看。

首先是一个统一的配置文件 其中可替换的部分用大括号括起来。文件名为: LocalStrings.properties

message.unknown = Unknown message

error.identifier.property.notfound = Cannot resolve identifier ''{0}''
error.identifier.method.notfound = Cannot find method expression for identifier ''{0}'' (null)
error.identifier.method.notamethod = Cannot find method expression for identifier ''{0}'' (found {1} instead)
error.identifier.method.access = Cannot access method ''{0}''
error.identifier.method.invocation = Error invoking method ''{0}'': {1}
error.property.base.null = Target unreachable, base expression ''{0}'' resolved to null
error.property.property.notfound = Cannot resolve property ''{0}'' in ''{1}''
error.property.method.notfound = Cannot find method ''{0}'' in ''{1}''
error.property.method.resolve = Cannot resolve method ''{0}'' in ''{1}''
error.property.method.access = Cannot access method ''{0}'' in ''{1}''
error.property.method.invocation = Error invoking method ''{0}'' in ''{1}''
error.function.invocation = Error invoking function ''{0}''
error.function.access = Cannot access function ''{0}''
error.function.nomapper = Expression uses functions, but no function mapper was provided
error.function.notfound = Could not resolve function ''{0}''
error.function.params = Parameters for function ''{0}'' do not match

error.method.literal.void = Expected type ''void'' is not allowed for literal method expression ''{0}'' 
error.method.invalid = Expression ''{0}'' is not a valid method expression
error.method.notypes = Parameter types must not be null
error.value.set.rvalue = Cannot set value of a non-lvalue expression
error.value.notype = Expected type must not be null
error.compare.types = Cannot compare ''{0}'' and ''{1}''
error.coerce.type = Cannot coerce from {0} to {1}
error.coerce.value = Cannot coerce ''{0}'' to {1}
error.negate = Cannot negate ''{0}''
error.null = Expression cannot be null

error.scan = lexical error at position {0}, encountered {1}, expected {2}
error.parse = syntax error at position {0}, encountered {1}, expected {2}
error.build = Error parsing ''{0}'': {1}

error.config.builder = Error creating builder: {1}

 接着是java代码

import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public final class TestMessage {
	private static final String BUNDLE_NAME = "LocalStrings";
	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

	public static String get(String key, Object... args) {
		String template = null;
		try {
			template = RESOURCE_BUNDLE.getString(key);
		} catch (MissingResourceException e) {
			StringBuilder b = new StringBuilder();
			try {
				b.append(RESOURCE_BUNDLE.getString("message.unknown"));
				b.append(": ");
			} catch (MissingResourceException e2) {}
			b.append(key);
			if (args != null && args.length > 0) {
				b.append("(");
				b.append(args[0]);
				for (int i = 1; i < args.length; i++) {
					b.append(", ");
					b.append(args[i]);
				}
				b.append(")");
			}
			return b.toString();
		}
		return MessageFormat.format(template, args);
	}
	
	public static void main(String[] args) {
	
		System.out.println(get("error.scan",123,"aaa","bbb"));
	}
}
 

然后是输出

lexical error at position 123, encountered aaa, expected bbb

 是不是发现很简单。

分享到:
评论

相关推荐

    Java操作Word模板实现动态数据输出

    ### Java操作Word模板实现动态数据输出 #### 一、引言 随着信息技术的发展,特别是数据库技术和网络技术的进步,许多企事业单位对于内部数据管理和外部信息发布的方式也在不断演变。当前,大多数单位倾向于将数据...

    java导入导出通用模板

    本主题将深入探讨“java导入导出通用模板”,特别是使用自定义注解和反射技术来实现这一目标。这些技术是Java POI库在Excel处理中的常见应用,可以帮助开发者更高效地管理数据的输入和输出。 首先,我们来看...

    Handlebars.java逻辑简单支持语义扩展的Java模板引擎

    通过以上介绍,我们可以看出Handlebars.java作为Java开发中的模板引擎,不仅提供了强大的语义模板功能,还允许开发者通过自定义助手和部分实现灵活的逻辑控制,使得Java应用的视图层更加清晰、易维护。结合Maven等...

    java课程设计模板-java课程设计模板

    通过以上对需求分析和系统设计的详细说明,我们可以看出,一个完整的Java课程设计模板不仅需要涵盖基本的功能需求,还需要考虑如何有效地组织这些功能,以及如何构建合理的数据库结构来支持这些功能。这有助于学生更...

    Java API文档.docx

    IDE的智能提示和代码补全功能也经常依赖API文档来提供准确的建议。 Java API文档是Java编程的基础,它不仅帮助新手入门,也为经验丰富的开发者提供了详尽的技术参考。熟悉和善用API文档,能够显著提升编程的效率和...

    1649-60套HTML5+CSS3后台管理登录模板下

    登录界面通常包括输入框、按钮、提示信息等元素,HTML5的新表单控件(如、)可以提供更丰富的用户输入体验。同时,CSS3的边框阴影、圆角、背景渐变等功能使得登录框看起来更加专业和精致。此外,通过CSS3的伪类和...

    使用kindeditor实现自定义邮件模板,后台根据不同数据动态生成邮件进行发送,前端简单实现demo

    综上所述,本项目结合KindEditor的富文本编辑功能和后台的动态生成、发送邮件能力,实现了自定义邮件模板的功能。这涉及到前端界面设计、HTML和字符串处理、SMTP邮件发送以及安全性和性能优化等多个方面的技术知识。

    eclipse中java注释模板

    总结,Eclipse中的Java注释模板功能使得开发者能够快速、规范地生成注释,提高编码效率。通过自定义模板,你可以根据项目需求和团队规范定制个性化的注释风格。熟练掌握这一特性,将使你的代码更具专业性和一致性。

    java实现一个配置简单功能强大的excel工具类,搞定大多数excel文件导入导出

    对于J2EE项目导入导出Excel是...鼠标移动到该列时提示信息可以通过注解配置. * 5.用注解设置只能下拉选择不能随意填写功能. * 6.用注解设置是否只导出标题而不导出内容,这在导出内容作为模板以供用户填写时比较实用.

    购物网站html模板

    使用HTML模板可以节省大量时间和精力,让开发者专注于后端逻辑和业务功能的实现。此外,模板往往还提供了良好的文档和支持,帮助开发者理解和自定义模板中的各个部分。 压缩包内的文件“中级项目_购物网站”可能...

    java实现注册时发送激活邮件+激活

    以下是这个功能实现的关键知识点: 1. **SMTP服务**:SMTP是互联网上传输电子邮件的标准协议。Java程序通常不直接使用SMTP,而是通过SMTP服务器来发送邮件。你需要配置SMTP服务器的地址、端口、用户名和密码等信息...

    JAVA实验报告模板

    【实验报告】 实验名称:Java开发环境与简单Java程序 实验目标: 本次实验的主要目标是...这个程序实现了冒泡排序并验证了参数的有效性,当参数无效时给出了提示信息。在输出结果中包含了个人的信息,符合实验要求。

    基于Java的源码-Beetl java模板引擎.zip

    Beetl是一款强大的Java模板引擎,它旨在简化Java开发中的视图层逻辑,提供高效、易用、功能丰富的模板语言。这款开源库由国人开发,其设计目标是提高开发效率,减少开发工作量,使开发者可以更加专注于业务逻辑,而...

    Eclipse/MyEclipse Java注释模板设置详解

    在编写Java代码时,只需在合适的位置输入模板的前几个字符,然后按下代码提示快捷键,IDE会自动补全模板内容。这大大提高了开发速度,确保了代码的一致性和专业性。 六、导出和导入模板 如果你想在不同的电脑或与...

    基于Java实现的丰富模板Snacky布局Snackbar设计源码

    该项目为基于Java实现的Snacky布局Snackbar设计源码,包含45个文件,涵盖Java、XML、JSON、Gradle、PNG等多种类型,提供丰富的模板和自定义选项,支持错误、警告、信息以及成功的提示样式,适用于在应用布局中便捷地...

    java 代码提示 首字母 提示

    Java代码提示首字母提示是Java开发环境中的一种便捷功能,它极大地提高了程序员的编码效率。当你在编写Java代码时,只需输入方法、类或变量名的首字母,IDE(集成开发环境)就会自动显示出与之匹配的完整标识符列表...

    门户网站模板(整套)

    7. **交互元素**:包括按钮、滚动条、提示信息等,这些元素的设计应当符合用户的操作习惯,提供良好的互动体验。 8. **SEO优化**:为了提高搜索引擎的可见性,模板可能已经考虑了SEO的最佳实践,如元标签、关键词...

    使用JavaSwing重写的美化版窗口模板

    Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java AWT(Abstract Window Toolkit)的扩展,提供了更为丰富的组件和更强大的功能。在这个“使用JavaSwing重写的美化版窗口模板”中,我们可以深入...

    java专业课程设计模板.doc

    - 考虑用户友好性,布局合理,提示信息清晰。 4.3 **关键功效实现** - 游戏启动、游戏规则说明、游戏过程和结束状态的处理。 - 分数计算和排行榜更新。 ### 5. 代码调试 - 运行单元测试,确保每个模块的功能...

Global site tag (gtag.js) - Google Analytics