`
ihuashao
  • 浏览: 4860997 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

struts 的radio标记的增强

阅读更多

写struts的html标记的人不知道是不是对html标记不熟,写出来的标记怎么怪里怪气的,id标记被用来绑定bean了,我还以为不支持html的id属性了,不小心看到org.apache.struts.taglib.html.BaseHandlerTag的prepareStyles()方法里面,居然赫然写着:
if (styleId != null) {
styles.append(" id=\"");
styles.append(getStyleId());
styles.append("\"");
}
原来要用styleId属性来定义html的id属性,不看源码你敢这么猜吗,怎么看styleId都象是个样式有关的属性嘛,要定义html的id属性,如果不能用id至少也应该叫HTMLID或者tagId之类的名字嘛。ok,源码都看了,那我们用styleId也成,可是看看radio标记就实在是笨了:
public int doAfterBody() throws JspException {
if (this.bodyContent != null) {
String value = this.bodyContent.getString().trim();
if (value.length() > 0) {
this.text = value;
}
}
return (SKIP_BODY);
}
你说我把文字括到<html:radio>text</html:radio>标记中间为的是什么?当然这个文字要和radio绑定啦。可是上面的代码居然直接把文字往生成的<input type="radio"...>标记后面一丢了事,有这么不负责的嘛?
还好咱java和html都还懂一点。自己写个类:
package hospital.tongren.oa.common.web.tag;
import javax.servlet.jsp.JspException;
public class RadioTag extends org.apache.struts.taglib.html.RadioTag{
public int doAfterBody() throws JspException {
if (this.bodyContent != null) {
String value = this.bodyContent.getString().trim();
if (value.length() > 0) {
this.text = "<label for=\""+getStyleId()+"\" "+
prepareEventHandlers()+
prepareStyles().replaceAll(" id=\""+getStyleId()+"\"","")+
">"+value+"</label>";
}
}
super.setStyleId(null);
return (SKIP_BODY);
}
static int idCount=0;
public int doStartTag() throws JspException {
if (super.getStyleId() == null){
super.setStyleId("RadioTag_"+ ++idCount);
}
return super.doStartTag();
}
}
然后再在WEB-INF下面找到struts-html.tld,把
<tagclass>org.apache.struts.taglib.html.RadioTag</tagclass>
改为
<tagclass>myPackage.RadioTag</tagclass>

这下整个世界都清凉多了。回家过五一了,下次再对checkbox开刀吧。

author: emu(黄希彤)
分享到:
评论

相关推荐

    struts1标记一下

    在实际开发中,Struts1标记与环境的交互是这样的:当JSP页面被请求时,JSP容器解析页面中的Struts1标记,根据TLD文件找到对应的标签处理器,然后生成Java代码。这个Java代码在Servlet容器中执行,通过ActionServlet...

    struts2 radio

    在Struts2中,`radio`标签是用于处理单选按钮的,它提供了一种优雅的方式来呈现和处理用户界面中的选择项。这篇博客文章可能是关于如何在Struts2框架中使用`radio`标签的深入讲解。 在Web开发中,单选按钮通常用于...

    Struts标记库Struts标记库Struts标记库

    Struts标记库Struts标记库Struts标记库Struts标记库

    struts 配置文件 标记库

    ### Struts配置文件详解 #### 一、Struts配置文件:`struts-config.xml` `struts-config.xml`是Struts框架的核心配置文件之一,它主要用于定义应用...同时,Struts提供的丰富标记库也极大地简化了Web页面的开发过程。

    Struts标记库.doc

    ### Struts标记库详解 #### 一、Struts标记库概述 Struts标记库是用于构建基于JavaServer Pages (JSP) 的Web应用程序的一种工具集。它由一系列自定义的HTML标记组成,这些标记简化了在JSP页面中管理JavaBeans、...

    Struts框架及标记库

    视图主要通过JSP页面展示,Struts的标记库提供了一系列标签来增强JSP的功能。 3. Struts框架中的组件 - Struts配置文件:配置文件(如struts-config.xml)是Struts的核心配置,用于定义Action、ActionMapping、...

    如何使用Struts标记库

    Struts标记库是Java开发Web应用时常用的工具,它提供了许多预定义的JSP标签,使得开发者能够更方便地创建MVC(Model-View-Controller)架构的应用程序。这些标签简化了HTML表单的处理,使得与Struts框架的交互更为...

    Struts标记库.rar

    - 配置struts-tiles或struts-bean标签库,以增强页面布局和对象的使用。 - 在JSP页面中引入Struts标签库,如`&lt;%@ taglib prefix="html" uri="/tags/html" %&gt;`。 - 使用Struts配置文件来定义动作映射和表单bean,...

    Struts标记库.chm

    Struts标记库是Java Web开发中的一个重要组成部分,它是由Apache软件基金会的Struts项目提供的一套预定义的JSP标签,这些标签旨在简化MVC(Model-View-Controller)架构中的视图层开发。在传统的JSP开发中,开发者...

    Struts标记使用API

    Struts标记库是Java开发Web应用时常用的工具,它提供了许多预定义的JSP标签,使得开发者能够更方便地处理常见的Web开发任务,比如表单处理、数据展示等。Struts标记API是这些标签背后的一套接口和类,用于帮助开发者...

    struts框架及标记库

    - **4.1.2 定义脚本变量标记**:在页面中定义和操作变量,增强页面的动态能力。 - **4.1.3 显示bean属性**:以安全的方式访问和展示Bean中的属性值。 - **4.1.4 消息国际化标记**:支持多语言环境,实现应用的...

    struts2的复习

    Struts2是一个强大的Java Web应用程序开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护、可扩展且结构清晰的Web应用提供了便利。在本复习资料中,我们将深入探讨Struts2的核心概念、主要特性...

    struts2 依赖注入boolean类型的属性时报错

    Struts2是一个流行的Java web框架,它提供了许多功能来简化应用程序开发,包括依赖注入(DI)。在使用Struts2时,有时可能会遇到依赖注入boolean类型属性时出现错误的问题。这个问题通常与框架对boolean类型的处理...

    struts的教程.doc

    Struts标记库 25 定制JSP标记 25 资源束 26 Bean标记 27 Bean复制标记 27 定义脚本变量的标记 28 显示Bean属性 29 消息标记和国际化 29 逻辑标记 30 条件逻辑 30 重复标记 32 转发和重定向标记 33 HTML...

Global site tag (gtag.js) - Google Analytics