Skip to content

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

示例:

1.jsp 顶端 申明引用

<%@ taglib prefix="feilongDisplay" uri="http://java.feilong.com/tags-display"%>

2.代码编写

场景描述: 假设有 i18n/education_zh_CN.properties 内容如下:

edu.option1=初中
edu.option2=高中
edu.option3=中专
edu.option4=大专
edu.option5=本科
edu.option6=硕士
edu.option7=博士
edu.option8=其他

2.1 需要在jsp中渲染成 select option 项,

我们可以使用下面的方式:

	
<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>

2.2 关于 selectedKey:

如果要做有值默认选中,那么可以设置 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>

2.3 关于 locale:

如果此时我们有英文语言站点,他的配置文件是 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

Clone this wiki locally