-
Notifications
You must be signed in to change notification settings - Fork 30
feilongDisplay option
feilong edited this page May 22, 2020
·
1 revision
用来基于 i18n配置文件,渲染select option选项,实现国际化功能,简化开发
自定义标签参数说明:
参数 | 说明 | 是否必须required | 默认 | 是否支持动态参数 |
---|---|---|---|---|
baseName | 配置文件的路径,如果在i18n文件下面有 edu-en.properties那么baseName就是去掉后缀,并且去掉语言的值:i18n/edu | true | 无 | true |
locale | 国际化语言,支持 java.util.Locale 或 String 类型的实例 | false | request.getLocale() | true |
selectedKey | 选中的key,可以不传,那么没有option会是选中状态,如果设置了,那么对应的key option的状态是 选中 | false | 无 | true |
示例:
<%@ taglib prefix="feilongDisplay" uri="http://java.feilong.com/tags-display"%>
场景描述:
假设有 i18n/education_zh_CN.properties
内容如下:
edu.option1=初中
edu.option2=高中
edu.option3=中专
edu.option4=大专
edu.option5=本科
edu.option6=硕士
edu.option7=博士
edu.option8=其他
我们可以使用下面的方式:
<select name="education">
<feilongDisplay:option baseName="i18n/education" />
</select>
此时页面渲染结果为
<select name="education">
<option value="edu.option1">初中</option>
<option value="edu.option2">高中</option>
<option value="edu.option3">中专</option>
<option value="edu.option4">大专</option>
<option value="edu.option5">本科</option>
<option value="edu.option6">硕士</option>
<option value="edu.option7">博士</option>
<option value="edu.option8">其他</option>
</select>
如果要做有值默认选中,那么可以设置 selectedKey
参数
<select name="education2">
<feilongDisplay:option baseName="i18n/education" selectedKey="edu.option6" />
</select>
此时页面渲染结果为
<select name="education2">
<option value="edu.option1">初中</option>
<option value="edu.option2">高中</option>
<option value="edu.option3">中专</option>
<option value="edu.option4">大专</option>
<option value="edu.option5">本科</option>
<option value="edu.option6" selected="selected">硕士</option>
<option value="edu.option7">博士</option>
<option value="edu.option8">其他</option>
</select>
如果此时我们有英文语言站点,他的配置文件是 i18n/education_en.properties,内容如下:
edu.option1=Middle School
edu.option2=Junior College
edu.option3=Bachelor
edu.option4=Others(Master/PHD)
可以传递 locale参数,如下:
<%
//此处是演示代码,实际开发过程中,不允许使用 <% %> 里面写jsp scriptlet
request.setAttribute("enLocale", Locale.ENGLISH);
%>
<select name="education3">
<feilongDisplay:option baseName="i18n/education" selectedKey="edu.option2" locale="${enLocale}" />
</select>
返回:
<select name="education3">
<option value="edu.option1">Middle School</option>
<option value="edu.option2" selected="selected">Junior College</option>
<option value="edu.option3">Bachelor</option>
<option value="edu.option4">Others(Master/PHD)</option>
</select>
core