资讯专栏INFORMATION COLUMN

Struts2【UI标签、数据回显、资源国际化】

graf / 692人阅读

摘要:值得注意的是的值是文件的全名也就是说,如果有包,就把包名写上并且,不需要写上后缀标签使用国际化的值是配置文件中配置的信息,写上就行了登陆测试注意,已经替换成了中文了如果文章有错的地方欢迎指正,大家互相交流。

Struts2UI标签

Sturts2为了简化我们的开发,也为我们提供了UI标签...也就是显示页面的标签.....

但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再被浏览器解析最后才显示在页面上的。因此,它的性能是不够HTML标签好的...HTML直接就能够被浏览器解析

还有一点是:我们在写网页的时候,肯定是需要使用div+css的页面布局的使用Struts2UI标签也没法干了....因此,除了有必要的话,才去使用Struts2UI标签

简单使用Struts2UI标签
<%--我们发现,Struts2UI标签用起来和HTML是差不多的--%>




    <%--输入框数据,lable就相当于我们以前外边写的数据--%>
    

    <%--密码框--%>
    

    <%--提交按钮--%>
    


当我们查看源文件的时候,发现Struts2UI标签为我们自动加入了很多的标签

设置主题

上面已经说了,Struts2UI标签为我们自动加入了很多的标签,那有的时候,我们不想要,或者换一种风格的话,怎么办???

Struts2UI标签也为我们提供了“主题”这样的功能...

当我们在表单中设置theme属性为simple之后...我们发现源文件Struts2自动为我们添加的标签全没了。

如果我们想整个项目都是使用simple为主题的话,我们可以在配置文件中配置

  
数据回显

我们对数据回显也不会陌生,在使用EL表达式的时候就已经用过了数据回显了....那为啥数据回显放在Struts2标签这里讲解呢???因为Struts2也提供了数据回显的支持,并且,使用数据回显必须要使用Struts2的标签...

按照正常思路写数据回显

在Struts中按照正常思路写数据回显是这样的:

把数据放到request域中存储,跳转到对应的JSP页面...

    public String login() {
        //把数据存储到域中
        Map request = ActionContext.getContext().getContextMap();

        request.put("username", "zhongfucheng");
        request.put("password", "123");

        return SUCCESS;
    }

JSP页面使用Struts2标签,设置value属性就可以进行数据回显了




    <%--输入框数据,lable就相当于我们以前外边写的数据--%>
    

    <%--密码框--%>
    

    <%--提交按钮--%>
    

效果:

Struts2提供的数据回显

其实,上面的代码已经实现了数据回显,但Struts2提供了一个更巧妙的方法

也就是说,Struts2可以直接在name中就可以实现数据回显了....要做的是:

我们回显的数据在根元素下的,也就是保存在CompoundRoot中的数据【保存在根元素的数据不用使用#号就可以获取】

因此,我们把想要回显的数据放在CompoundRoot下

直接放在值栈的数据就是根元素数据

        //得到值栈对象
        ValueStack valueStack = ActionContext.getContext().getValueStack();
        valueStack.set("username","zhongfucheng");

在JSP就可以直接获取了

  

效果:

Struts2标签:checkboxlist

参考自博文:http://www.blogjava.net/korad...

语法:

  

name定义标签名,用于接收画面上选中的复选框,故应与Action里定义的属性一致,且多为数组;

list定义集合变量,用于输出复选框到画面上,一般在Action里定义一个List或Map属性;

listKey如果在Action里定义的是一个List,则往往会在List里定义一个Bean,它只有两个属性,其中一个(比如id)就在这里设置;

如果在Action里定义的是一个Map,则Map的key就在这里设置;

listValue如果在Action里定义的是一个List,则往往会在List里定义一个Bean,它只有两个属性,另外一个(比如name)就在这里设置

如果在Action里定义的是一个Map,则Map的value就在这里设置;

value用于回显画面上被选中的复选框,假如画面有输入检查,如果有错则返回原画面并显示出错信息,这时候就需要使用它。

一般把它设成和name一致就可以了。

例子:

查询了所有的角色,得到用户与角色的所有id了。把封装到数组中。

    public String editUI() {

        //把所有的角色查询出来,带过去给JSP页面显示
        ActionContext.getContext().getContextMap().put("roleList", roleServiceImpl.findObjects());

        //外边已经传了id过来了,我们要找到id对应的User
        if (user != null &&user.getId() != null  ) {
            //直接获取出来,后面JSP会根据User有getter就能读取对应的信息!
            user = userServiceImpl.findObjectById(user.getId());

            //通过用户的id得到所拥有UserRole
            List roles = userServiceImpl.findRoleById(user.getId());
            //把用户拥有角色的id填充到数组中,数组最后回显到JSP页面
            int i=0;
            userRoleIds =  new String[roles.size()];
            for (UserRole role : roles) {
                userRoleIds[i++] = role.getUserRoleId().getRole().getRoleId();
            }

        }
        return "editUI";
    }

name值的是数组,可以用于自动回显。Action得到角色的id也是通过它

  
资源国际化

我们在学JSTL标签的时候就涉及到了资源国际化,,,但是呢,在JSP的章节我并没有写博文来讲解怎么弄....一方面感觉JSP的资源国际化好麻烦,另一方面是感觉用的地方很少.....因此就没有深入去了解它...

今天呢,学习到了Struts2的资源国际化了。重新看回JSP资源国际化的步骤,再对比一下Struts的资源国际化

Servlet和Struts资源国际化区别

在Servlet写资源国际化的步骤:

写资源文件

基础名.properties【默认】

基础名_语言简称_ 国家简称.properties

读取配置文件

jstl提供的格式化与国际化标签库。

在Struts2写资源国际化的步骤:

写资源文件

基础名.properties【默认】

基础名_语言简称_ 国家简称.properties

读取配置文件再使用

struts标签获取资源文件内容

区别:

Struts2加载资源文件更加简单,通过常量配置即可!提供的Struts标签更简单使用

资源国际化Demo

下面就使用Struts来写一个资源国际化的Demo....

写资源文件

值得注意的是:在IDEA下写properties资源文件,如果涉及到中文,默认是不会帮我们编码的。它是不像eclipse的...因此需要我们手动去设置的......设置的教程在我的IDEA博文中有...如果出现了这个问题,那就去IDEA博文下找呗。。。

在Struts中使用常量加载资源文件

我们直接在Struts中使用contant节点来加载我们自己写的配置文件。值得注意的是:value的值是文件的全名(也就是说,如果有包,就把包名写上)....并且,不需要写上后缀...

 

Struts标签使用国际化

name的值是配置文件中配置的信息,写上就行了!


    <s:text name="title"></s:text>
    
    
    






测试

注意,title已经替换成了中文了!!

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68751.html

相关文章

  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • 纳税服务系统【总结】

    摘要:要是使用到日历的话,我们想到使用这个日历类上面仅仅是我个人总结的要点,如果有错误的地方还请大家给我指正。 纳税服务系统总结 纳税服务系统是我第一个做得比较大的项目(不同于javaWeb小项目),该项目系统来源于传智Java32期,十天的视频课程(想要视频的同学关注我的公众号就可以直接获取了) 我跟着练习一步一步完成需求,才发觉原来Java是这样用来做网站的,Java有那么多的类库,页面...

    ispring 评论0 收藏0
  • Struts2【拦截器】就是这么简单

    摘要:文件上传通过这个拦截器拦截器的设计就是基于组件设计的应用再次回顾拦截器基础在开始讲解的时候已经说明过了这个文件,它定义了的所有拦截器。由于我们配置了自定义拦截器,那么默认的拦截器栈是不会执行的。 什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了...

    chanjarster 评论0 收藏0
  • SpringMVC【参数绑定、数据回显、文件上传】

    摘要:那我们就不用在每一个方法通过将数据传到页面。还能够配置该参数是否是必须的。方法的返回值有种重定向转发内部就是将数据绑定到域对象中的。注解能够将数据绑定到中也就是中,如果经常需要绑定到中的数据,抽取成方法来使用这个注解还是不错的。 前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Cont...

    Flink_China 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<