欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

struts2标签<s:generator>,,有的时候,我们在数据库中

来源: javaer 分享于  点击 30747 次 点评:277

struts2标签<s:generator>,,有的时候,我们在数据库中


有的时候,我们在数据库中,会在一个字段存放多个值,之间用特殊字符分割。比如,需要某个字段存放了用户个人使用的编程语言(可以多选)1.Java2.C3.PHP如果用户选择了1和2,那么,在数据库中的"编程语言"一栏里,可能会写入"1,2"(此处以逗号分隔).当在查询页面需要显示编程语言时,我们不能直接显示"1,2",而是需要转换成"Java、C"。方案1:我们可以在后台得到查询结果后转义,这个需要在后台遍历查询的结果集,效率不高。方案2:我们可以使用struts2的标签<s:generator>实现上面的功能<s:generator val="languageItem" separator="," converter="%{languageItemConverter}">    <s:iterator status="row_languageItem">        <s:if test="#row_languageItem.index != 0">            、<s:property />        </s:if>        <s:else>            <s:property />        </s:else>    </s:iterator></s:generator>    val="languageItem":为后台保存"1,2"的变量;separator=",":标明变量的分隔符;converter="%{languageItemConverter}":指明languageItem的转换方法,我们需要在对应的Action中添加方法public org.apache.struts2.util.IteratorGenerator.Converter getLanguageItemConverter(){}。<s:generator>内部需要嵌套使用<s:iterator>来遍历后台转换后产生的结果集,然后使用特定的方式显示(例子中是通过"、"来分隔显示转义后的字符)。下面是此方法Action的部分代码:     *Action.java    /**     * 转义数据库中存放的用户个人使用的编程语言     * @return     */    public Converter getLanguageItemConverter(){        return new Converter() {            public Object convert(String value) throws Exception {                String result = "";                switch (Integer.parseInt(value)) {                    case 1:                        result = "Java";                        break;                    case 2:                        result = "C";                        break;                    case 3:                        result = "PHP";                        break;                }                return result;            }        };    }通过以上代码,页面上最终将显示的结果是:Java、C最后再提一下<s:generator>标签中的可选属性count,它是用来指定所生成迭代器中元素的数量。以上面为例,如果设置count="1",页面将只显示:Java;如果设置count="3",页面将显示:Java、C、Java;也就是说,如果count的值大于转换后的结果集个数,他将会从头循环结果集,直到填满count设置的数量,所以,如没有特殊要求,我们一般不设置此属性。//该片段来自于http://byrx.net
相关栏目:

用户点评