Struts中自定义标签中获取值栈valuestack
获取 自定义 标签 struts
2023-09-27 14:28:01 时间
首先,要纠正下在《自定义-扩展struts2的标签》一文中笔者的分析。在该文中笔者说,
最近在做j2ee的项目,需要封装很多标签,发现直接从BodyTagSupport继承的话,无法获取valuestack,也无法借用struts的国际化解决方案。
首先,要纠正下在《自定义-扩展struts2的标签》一文中笔者的分析。在该文中笔者说,
最近在做j2ee的项目,需要封装很多标签,发现直接从BodyTagSupport继承的话,无法获取valuestack,也无法借用struts的国际化解决方案。所以需要扩展struts的标签。
最近研究发同,其实即使从BodyTagSupport类继承来实现自定义的标签类,也可以取到valuestack. ,如下所示:
ValueStack stack = TagUtils.getStack(pageContext);
最近实现的一个日期控件就是这样做的:
package com.jdgm.common.tag; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.GregorianCalendar; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport; import org.apache.commons.lang.StringUtils; import org.apache.struts2.views.jsp.TagUtils; import com.jdgm.framework.model.UiItem; import com.jdgm.platform.ConstantsPF; import com.jdgm.platform.common.enums.QueryControlType; import com.jdgm.platform.common.enums.QueryOperatorType; import com.jdgm.platform.common.tag.CommonStrutsTag; import com.jdgm.platform.components.log.LogUtil; import com.opensymphony.xwork2.util.ValueStack; * @author zhangpf 20120801 * 因为之前使用的jscalendar的诸多问题,在当前项目中不得不扩展自己的控件,使用My97Datepicker public class Calendar extends BodyTagSupport{ private String id=""; private String name=""; private String value=""; * 日期格式 * 年月日:yyyy-MM-dd * 年月日 时分秒:yyyy-MM-dd HH:mm:ss private String format="yyyy-MM-dd"; * 当只读为true是,不会显示输入框右侧的图片,也不能打开日期编辑窗口 private String readonly="false"; private String width="150";
String content =" input readonly type=text id=\"%s\" name=\"%s\" value=%s %s \n %s"; // 取得值栈,实现回显功能 ValueStack stack = TagUtils.getStack(pageContext); String valueStr=""; if(stack!=null) Object obj=stack.findValue(name);//取出的对象,可能是timestamp也可能是String if(obj!=null) //把取得值转换成用户设置的格式 SimpleDateFormat formatter = new SimpleDateFormat(this.getFormat()); Date date=null;
String out=String.format(content, this.getId(),this.getName(),value,this.getWidth(),this.getClickAction(),this.getImage());// pageContext.getOut().println(out); catch(Exception e) LogUtil.error("生成日历控件失败", e); return EVAL_PAGE; * 点击动作的实现js * 用于输入框和日历图标的点击事件 * @return private String getClickAction() if(readonly.toUpperCase().equals("TRUE")) return ""; return " "WdatePicker({el:"+this.getId()+",dateFmt:"+this.getFormat()+"})\" "; * 输出右侧的日历图标 * @return private String getImage() if(readonly.toUpperCase().equals("TRUE")) return ""; return " img src=\""+ConstantsPF.URL_WEBSITE+"/img/calendar.png\" width=\"16\" height=\"16\" \n" +this.getClickAction() +" "cursor:hand\" ....................//各变量的get/set函数就不写出来了
ActionContext、ValueStack、OGNL | 学习笔记 快速学习 ActionContext、ValueStack、OGNL 代理,介绍了 ActionContext、ValueStack、OGNL 系统机制, 以及在实际应用过程中如何使用。
Struts2【OGNL、valueStack】就是这么简单 什么是OGNL表达式? OGNL是Object Graphic Navigation Language 是操作对象属性的开源表达式。 Struts2框架使用OGNL作为默认的表达式语言。 为什么我们学习OGNL 在学习JSP的时候,我们已经学习过了EL表达式。
狂想盼盼 2009年毕业于南开大学,目前从事互联网行业,主要担任产品经理和技术经理的职位。
相关文章
- 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB(干货 | 建议珍藏) c#自定义Attribute获取接口实现 纯JS ajax 聊聊DataTable下载 二进制数据的序列化反序列化和Json的序列化反序列化的重要区别
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
- Python __subclasses__() 函数获取类的所有子类
- java获取C盘下的隐藏目录文件名称
- 获取cpu使用率
- vue获取头部url的id
- c++ 如何获取系统时间
- 新浪微博api出现认证失败问题 (获取code字段值的问题)
- android中获取包名,类名
- 通过ip获取省份城市名称(腾讯地图apis)
- 自定义指令----focus获取焦点事件
- Android简单自定义View——获取图片颜色的ImageView
- 自定义Hooks函数(案例:获取窗口大小)
- 微信小程序~自定义属性设置和获取(data-)
- Qt之QHeaderView自定义排序(获取正确的QModelIndex)
- 几种获取时间戳与获取自定义时间戳的实现方法
- linux系统编程:获取glibc的版本号
- windows密码获取凭证
- 获取View组件宽度以及ViewTreeObserver
- pageContext 获取Session 为null原因
- 获取自定义下拉列表,右侧信息
- JS获取元素属性和自定义属性
- JS获取元素属性和自定义属性
- SSM获取表单数据插入数据库并返回插入记录的ID值
- C/C++ Windows API——获取鼠标位置的窗口句柄