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框架中,radio类型的input标签,如何传值?

解决: 通过radio的value属性传值。 在action中,设定属性名和input对应的name值一致。 若JSP代码如下: ...
  • badyflf
  • badyflf
  • 2012年11月11日 15:50
  • 4452

Struts2单选按钮标签:radio的使用

Map payforState = new TreeMap(); payforState.put("1", "已付费"); payforState.put("0", "未付费"); payforSta...
  • buggirl
  • buggirl
  • 2016年11月14日 21:04
  • 838

jsp页面中的html:radio 如何struts传递

jsp页面中的html:radio 怎么struts传递? 我写了格搜索的jsp页面,里面有个radiogroup,就是按书名或者作者搜索书籍, 文本区为用户填写的搜索内容,radiogroup...
  • qwer__mei98382
  • qwer__mei98382
  • 2014年05月22日 12:07
  • 408

设置struts的html:radio默认为选中状态

 由于没有checked/selected属性,所以我们可以使用javascript来完成这个功能。  当页面下面加上:         document.all("sex")[0].checked...
  • wangle100wangle
  • wangle100wangle
  • 2008年10月16日 13:41
  • 6271

struts2 如何获取jsp中radio的值

多个radio只要名字name相同,那么他们就是一组  然后在你的Action中,private String xxxx;  xxxx是与你的一组radio的name相同,那么你选择哪一个  S...
  • repeator
  • repeator
  • 2011年12月29日 22:32
  • 1574

struts2中<s:radio>标签设置默认选中项

在使用s:radio标签的时候,如果要使该标签默认选中一项,可以通过两种方法  1、通过js代码实现  document.getElementsByName('user.sex')[0].chec...
  • H12KJGJ
  • H12KJGJ
  • 2016年11月25日 19:10
  • 341

struts2中s:radio标签的使用【转】

struts2中s:radio标签的使用【转】 .netBlog 遇到的问题:在使用该标签时,设置了默认选中项,但提交数据返回后,单选框不能显示之前选中的项,仍然为默认选项 通过测试得出以下结...
  • xing_sky
  • xing_sky
  • 2012年10月19日 12:08
  • 7555

struts的html标签和html中的标签有什么区别

struts的html标签和html标签有什么区别吗?其实我也一直在想这个问题,今天突然在论坛上看了一个帖子才知道一些答案。现摘录下来仅供大家参考,如果各位有更好的正确看法,请指出本人的理解误区。 ...
  • BigBird2012
  • BigBird2012
  • 2010年03月26日 22:45
  • 4146

html中radio的checked与选中

最初使用html的radio标签时以为checked标签就是选中,在动态改变radio标签的选中状态时总是没有得到理想结果。     查资料加各种验证有了一点小想法。貌似被设置被checked属性只...
  • junziruyu_
  • junziruyu_
  • 2015年09月06日 13:55
  • 1927

struts标签:bean标签

1. 当前页面获取jsp页面内置对象  jsp内置对象:application                          session                          re...
  • jrunner
  • jrunner
  • 2006年09月17日 22:14
  • 1814
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts 的radio标记的增强
举报原因:
原因补充:

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