struts 的radio标记的增强

原创 2005年04月30日 17:03:00

写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(黄希彤)

struts2 如何获取jsp中radio的值

多个radio只要名字name相同,那么他们就是一组  然后在你的Action中,private String xxxx;  xxxx是与你的一组radio的name相同,那么你选择哪一个  S...

浅谈struts2标签中的2个很常用的标签的用法(radio和select)

1.如图所示我们需要在前台的页面通过radio和select将对应的数据库中的数据显示到选项当中,这也是我们做项目中经常需要做的,动态的显示,而不是静态的显示。 首先我们需要在页面中导入strut...
  • dq3wrr
  • dq3wrr
  • 2014年07月26日 10:34
  • 1363

Struts2中的ognl标签介绍(property标签、iterator标签、if/elseif/else标签、url标签、url标签、radio单选框、select下拉选择框)

Struts2中的ognl标签介绍(property标签、iterator标签、if/elseif/else标签、url标签、url标签、radio单选框、select下拉选择框) proper...

Struts2标签库(9):<s:checkboxlist/>,<s:radio/>

start.jsp : Insert title here   struts.xml :

Struts2标签库(8):<s:form/>,<s:textfield/>,<s:password/>,<s:radio/>,<s:checkbox/>

start.jsp : Insert title here 标签用法 struts.xml :

struts2 标签 radio

s
  • foart
  • foart
  • 2011年07月11日 17:12
  • 1941

Struts2中radio标签使用示例

实例:   表单中的性别选项(radio),界面中需要它有个默认值。 实现方法一:     1 为sexs集合建立一个bean类(只需要提供Map的get方法):         pub...

struts框架及标记库

  • 2007年04月18日 10:00
  • 646KB
  • 下载

struts1标记一下

  • 2011年05月22日 23:53
  • 1.29MB
  • 下载

jsp页面中实现时间相减,并且在最近添加的新闻后右上角添加标记(涉及struts2标签和jquey)

折腾了半天终于弄出来了,可能是对于jquery不是很熟, 需要解决的第一个问题:样式问题,这里没什么好说的,直接贴代码了; .list{position:re...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts 的radio标记的增强
举报原因:
原因补充:

(最多只允许输入30个字)