最近用jsf做项目,发现其中的<h:selectOneRadio /> 很不好用.在应用中要求可以控制radio的是否可用.是否checked,以及是否显示.于是发现<h:selectOneRadio />实现起来很不方便.由于时间紧迫也没去仔细研究.于是想到熟悉的简单的HTML来实现.通过同事老手启示于是用一下办法来实现了一个符合业务逻辑控制要求的radio.
这里进一步看一下
(在写代码时发现,这里的代码输入工具会自动转换一些特殊编码.如("), 于是生成了下面清晰一些的代码,但是是编译不通过的)
这样就可以通过item['ISCHECK'] 的值是否为空,或其它判断来实现 radio是否checked(html 中radio的checked,disabled属性只有一个值,因此只要checked就可以了),其它属性同样可以通过这样的方法来实现.
于是发现通过el表达式完全可以通过java代码来控制radio的属性(这样的控制可能不是好的处理)
如果item['ISCHECK'] ,item[ISDISABLE] item['RADIO_ID'] 都不空 最后的页面源码将会是
如果 item['RADIO_ID'] 为空.这个radio里面将会加上
这样一个方便控制的radio就出来了
稍微熟悉jsf的可以想到我们可以用rendered的属性可以方便的控制radio的显示与否
如用:
来替换上面:
实现是否渲染这个组件(这样也可以用来实现我们要显示那一个组件 类似jstl中 c:if 的简单作用)
组件化
下面为了使用的方便可将将其组件化,facelets的模块化支持让我们很容易的实现
定义这个组件的配置文件
然后就可以引用了.如:
当然facelets其它的引用方法也可以了
今年刚毕业,从刚入大学就逛CSDN,这个帖子算是我发的第一个技术贴.高手看了肯定觉得很粗浅,要是有更好的解决方法.请不吝指教阿.
这是我参加第一个项目学到的最有感触的东西: "想法",实现现在看其起来很简单 ,这个实现也是得益于项目中两位大哥的启发.这里感谢他们项目中给予的很多帮助!