Struts2 自定义下拉框Tag标签

自定义标签主要包括三个步骤:

1、编写java类,继承TagSupport类;

2、创建tld文件,影射标签名和标签的java类;

3、jsp页面引入tld。

例子:自定义下拉框标签

如果页面上有下拉选择框,通常最好的解决方法是使用数据字典,因为有可能多个页面

使用同一个下拉框,便于后台统一维护。

自定义Tag类

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class DictionaryOptionTaget extends TagSupport {
private static final long serialVersionUID = 1L;
private String index; // 字段索引 ,页面上通过标签属性传回来的值
@SuppressWarnings("unchecked")
@Override
public int doEndTag() throws JspException {
JspWriter jspw = this.pageContext.getOut();
StringBuffer options = new StringBuffer();
/**
* 需要查询数据库 字段索引为SEX的option内容,这里是写死
*/
if ("SEX".equals(index)) {
options.append("<option value=''>-请选择-</option>");
options.append("<option value='1'>男</option>");
options.append("<option value='0'>女</option>");
}
try {
jspw.println(options); //输出
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
@Override
public int doStartTag() throws JspException {
return 0;
}
public String getIndex() {
return index;
}
public void setIndex(String index) {
this.index = index;
}
}

定义tld

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>tagSample</short-name>
<uri>/hellotag</uri>
<tag><!-- 从数据字典检出一个option列表 -->
<name>OptionDictionary</name>
<tag-class>
com.itmyhome.DictionaryOptionTaget
</tag-class>
<body-content>empty</body-content>
<attribute>
<name>index</name><!-- 字段索引名 -->
<required>true</required><!-- 是否必填 -->
<rtexprvalue>false</rtexprvalue><!-- 是否能够以${}方式传值 -->
</attribute>
</tag>
</taglib>

需要注意的是:<rtexprvalue>true</rtexprvalue> 时候,可以使用JSP表达式

表示该自定义标签的属性值可以使用 ${} 方式动态传值。

使用自定义的标签

<%@ taglib uri="/WEB-TAG/platForm.tld" prefix="PF"%>
<select>
<PF:OptionDictionary index="SEX"/>
</select>

页面输出:

struts2标签-下拉列表的两种写法

第一种写法

<s:set name="selList" value="# {'1':'质量','2':'成本','3':'进度'}"></s:set>
<s:select list="#selList" listKey="key" listValue="value" name="columnName" headerKey="0" headerValue="--请选择--"></s:select>

第二种写法:

<s:select name="columnName" list="{'质量','成本','进度'}" headerKey="-1" headerValue="--请选择--" emptyOption=" true" multiple="false"/>
(0)

相关推荐

  • JSP 开发之Struts2内建自定义拦截器

    JSP 开发之Struts2内建自定义拦截器 Struts2的自定义拦截器主要用于解析请求参数,将请求参数赋值给Action属性,执行数据校验,文件上传等等操作.当需要扩展Struts2的功能时,我们只需要提供相应的拦截器并将它配置到Struts2容器中即可:当我们不需要使用的时候,只需要取消它在Struts2容器中的配置就行了. 1>配置拦截器主要使用四个配置元素: :用于配置自定义拦截器 :用于引用拦截器或者拦截器栈 :用于配置自定义拦截器栈,一个拦截器栈由多个拦截器构成,也可以包含其他的拦

  • Struts2通过自定义标签实现权限控制的方法

    近期在开发中遇到一种需求:根据用户的权限决定是否显示某操作按钮. 例如:若用户拥有删除数据的权限,则在界面中显示"删除"按钮:若用户无该权限,则界面中不显示相应按钮. 这样,就需要用到自定义标签了. 要定义Struts2的自定义标签,只需三步: 1.定义一个Component类,并继承自org.apache.struts2.components.Component; 2.定义一个Tag类,并继承自import org.apache.struts2.views.jsp.Component

  • struts2自定义拦截器的示例代码

    题目:使用struts2自定义拦截器,完成用户登陆才能访问权限的实现 在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆 显示提示信息(请先登录) 定义拦截器 在struts.xml中定义拦截器使用标签<Intercaptors>.<Intercapter>. <interceptors> <interceptor name="test" class="Intercaptor.Intercaptor

  • 关于Struts2文件上传与自定义拦截器

    一.访问或添加request/session/application属性 public String scope() throws Exception{   ActionContext ctx = ActionContext.getContext();   ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app   ctx.getSession().put("ses", &q

  • struts2自定义MVC框架

    本文实例为大家分享了struts2自定义MVC框架的方法,供大家参考,具体内容如下 自定义MVC: (首先了解Model1和Model2的概念) Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形成一个Servlet,Model2也是基于MVC开发. 总结MVC特点如下: (1)数据的获取和显示分离 (2)控制器将不同的模型和视图组合在一起 (3)应用

  • Struts2 自定义下拉框Tag标签

    自定义标签主要包括三个步骤: 1.编写java类,继承TagSupport类: 2.创建tld文件,影射标签名和标签的java类: 3.jsp页面引入tld. 例子:自定义下拉框标签 如果页面上有下拉选择框,通常最好的解决方法是使用数据字典,因为有可能多个页面 使用同一个下拉框,便于后台统一维护. 自定义Tag类 import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.

  • Jquery Easyui自定义下拉框组件使用详解(21)

    本文实例为大家分享了Jquery Easyui自定义下拉框组件的实现代码,供大家参考,具体内容如下 加载方式 JS调用加载 自定义下拉框不能通过标签的方式进行创建. <input id="box" /> <script> $(function () { //JS 加载调用 $('#box').combo({ required : true, multiple : true, }); }); </script> 属性列表 <script>

  • js实现自定义下拉框

    本文实例为大家分享了js实现自定义下拉框的具体代码,供大家参考,具体内容如下 实现思路: (1)创建一个列表和一个span之类的标签(那个标签都可以), (2)列表的每一项分别绑定点击事件,点击那一项就把span内容变为改那一项内容,然后隐藏列表. (3)列表要先隐藏,点击span标签再让它显示,什么都不选时点击document隐藏列表. (4)键盘上的按键都有各自的键码,通过这个键码可以来判断按下的是哪个键来执行相应的操作,下面函数可以获取键盘的键码 document.addEventList

  • jQuery 自定义下拉框(DropDown)附源码下载

    先给大家展示下效果图,喜欢的朋友可以下载源码哦 效果演示   源码下载 <section class="main"> <div class="wrapper-demo"> <div id="dd" class="wrapper-dropdown-1" tabindex="1"> <span>手册网</span> <ul class="

  • toggle一个div显示或隐藏且可扩展成自定义下拉框

    复制代码 代码如下: $(function(){ //toggle div $("#gga").click(function(event){ event.stopPropagation(); //阻止冒泡事件 $(".toggleoption").slideToggle("fast"); }); //slideup div $(document).click(function(event) { var eo = $(event.target);

  • Struts2下拉框实例解析

    其实以前我对Java的Struts框架没有具体认识,通过这篇文章,真的让我了解了框架的用处,好处. 下拉框在Web开发中经常会使用到,下面我们通过struts2的标签来实现下拉框的一些功能. 先来看看<s:select>的一些参数: 注:listKey相当于HTML中的value值,我们是通过它的值来和后台进行交互的. 案例:用户选择了自己的偶像,然后要对其进行修改,跳转到修改界面之后,要回显用户最初选择的偶像. 用户偶像界面(假设用户当前的选择为"习近平"): 实现代码!

  • 基于jquery扩展漂亮的下拉框可以二次修改

    继续发一篇关于web前端自定义控件--ComboBox(下拉框),以往我在使用下拉框控件老是为了样式丑陋而烦恼,现在分享这个控件,希望有用的同仁们可以收藏,或进行二次修改,达到你想要的效果. 分解自定义下拉框: 1.创建构造函数,初始化赋值控件值. 2.绑定控件呈现在前台. 3.点击下拉框控件,展示下拉列表 4.点击触发下拉框控件,收起下拉列表. 5.点击下拉项触发事件. 代码如下: Html代码: 复制代码 代码如下: <b class="select_type"><

  • Vue.js仿Select下拉框效果

    本文实例为大家分享了Vue.js仿Select下拉框效果的具体代码,供大家参考,具体内容如下 废话少说,直接上图上代码: 效果图: HEML: <div id="demo"> <h2 class="title">自定义下拉框</h2> <imitate-select h2-value="第一个 Select" v-bind:list="list1"></imitate-se

  • 微信小程序实现简单的select下拉框

    微信小程序实现一个简单的select下拉框,供大家参考,具体内容如下 用的是transform过渡,没用动画 看看效果 废话不多说,直接上代码 wxml: <view class="item"> <label class="first"><text>*</text>公司/商户类型:</label> <!-- 通过点击事件改变图片的旋转角度.自定义下拉框的高度 --> <view class

  • 自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框

    先说点闲话,熟悉Angular的猿们会喜欢这个插件的. 00.本末倒置 不得不承认我是一个喜欢本末倒置的人,学生时代就喜欢先把晚交的作业先做,留着马上就要交的作业不做,然后慢悠悠做完不重要的作业,卧槽,XX作业马上要交了,赶紧补补补.如今做这个项目,因为没找到合适的多选下拉Web插件,又不想用html自带的丑陋的<select multiple></select>,自己花了一整天时间做了一个.或许这样占用的主要功能开发的时间,开发起来会更有紧迫感吧.感觉自己是个抖M自虐倾向,并且伴

随机推荐