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

实现Struts国际化功能的详细示例 随着Java Web应用的迅速发展,MVC(Model-View-Controller,模型-视图-控制器)模式逐渐成为组织Web应用架构的标准范式。Struts框架作为Java EE中实现MVC模式的代表性框架,它将Web层的应用逻辑、数据模型与用户界面分离开来,极大地提高了Web应用的可维护性和扩展性。在本章中,我们将介绍Struts框架中MVC模式的基本概念和作用,以及它如何将用户的请求转发到相应的处理组件,并将处理结果呈现给用户。 阅读详情

Struts2UI标签

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

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

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

简单使用Struts2UI标签


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

<s:form id="form1" name="form1" method="POST" action="#">


    <%--输入框数据,lable就相当于我们以前外边写的数据--%>
    <s:textfield label="用户名" name="user.username"/>

    <%--密码框--%>
    <s:password label="密码" name="user.password"/>

    <%--提交按钮--%>
    <s:submit value="提交"/>

</s:form>

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

这里写图片描述

设置主题

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

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

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

这里写图片描述

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


  <constant name="struts.ui.theme" value="simple"/>

数据回显

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

这里写图片描述

按照正常思路写数据回显

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

  • 把数据放到request域中存储,跳转到对应的JSP页面…
    public String login() {
        //把数据存储到域中
        Map<String, Object> request = ActionContext.getContext().getContextMap();

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

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

<s:form id="form1" name="form1" method="POST" action="" >


    <%--输入框数据,lable就相当于我们以前外边写的数据--%>
    <s:textfield label="用户名" name="user.username" value="%{#request.username}"/>

    <%--密码框--%>
    <s:password label="密码" name="user.password"/>

    <%--提交按钮--%>
    <s:submit value="提交"/>

</s:form>
  • 效果:

这里写图片描述


Struts2提供的数据回显

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

这里写图片描述

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

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

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

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

        //得到值栈对象
        ValueStack valueStack = ActionContext.getContext().getValueStack();
        valueStack.set("username","zhongfucheng");
  • 在JSP就可以直接获取了

  <s:textfield label="用户名" name="username"/>
  • 效果:

这里写图片描述


Struts2标签:checkboxlist

参考自博文:http://www.blogjava.net/koradji/articles/307399.html

语法:

<s:checkboxlist name="" list="" listKey="" listValue="" value="" />

  • 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<UserRole> 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也是通过它


  <s:checkboxlist list="#roleList" name="userRoleIds" listKey="roleId" listValue="name"></s:checkboxlist>

资源国际化

我们在学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的值是文件的全名(也就是说,如果有包,就把包名写上)….并且,不需要写上后缀…

 <constant name="struts.custom.i18n.resources" value="msg"></constant>

这里写图片描述


Struts标签使用国际化

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


<head>
    <title><s:text name="title"></s:text></title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
</head>

<body>
<form method="post" action="${pageContext.request.contextPath }/user_login.action">
    <s:text name="username"></s:text> <input name="admin.userName"><br/>
    <s:text name="psd"></s:text><input type="text" name="admin.pwd"><br/>
    <input type="submit" value="登陆"><br/>
</form>
</body>

测试

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

这里写图片描述

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

Struts国际化插件实战指南 本文还有配套的精品资源,点击获取 简介:Struts是一款开源的MVC框架,用于构建企业级Java Web应用。其国际化插件支持多语言版本的应用程序,通过资源文件、编码转换、Locale选择、标签库支持、动态切换和自定义配置,简化了多语言Web应用的开发。本文将详细介绍Struts国际化插件的工作原理和实用技巧,帮助开发者提升软件的全球适应性。 1. Struts... 阅读详情

相关推荐

struts2 UI标签

NULL 博文链接:https://cdxs2.iteye.com/blog/1938252

Struts2——常用标签(数据回显)

对于数据回显,必须要用struts标签!   例如下面这个标签有两种方式实现回显:<td><s:textfield name="user.username"/></td>  1) 将user作为action的实例变量     Action跳转时是这样的 public class UserAction extends ActionSupport { private User user;

JAVA那些事 4136

struts2 标签详解+ ui标签实例

struts2标签详解+ui实例 讲述了一般常用标签

Struts2中的数据回显

Struts2中我们为什么要用数据回显呢?比如,当我们提交的数据有错误时,这时候我们在表单页面就需要提示错误信息。 就拿上一篇中的数据类型转换的问题来说明数据回显。当我们没有实现自定义的数据类型转换器,那我当我们提交 9/1/1999 这样的日期时就会出错。 那么我们怎样将错误信息回显呢。首先我们需要在struts配置文件中,写入input类型的result结果,当接收到错误信息跳转回表单界面。其

melissa_hexiu的博客 6981

Struts2Ui标签

form,这个属性 引用表单元素所在的表单,通过该form属性,可以实现表单元素和表单之间的交互。例如,我们可以通过${parameters.form.id}来取得 表单元素所在表单的ID。

NVIDIA DGX Spark (Ubuntu 24.04) 部署Isaac Sim与Isaac Lab:二进制安装与ROS2集成实战

本文详细介绍了在NVIDIA DGX Spark工作站(Ubuntu 24.04系统)上,通过预编译二进制包稳定部署Isaac Sim与Isaac Lab的完整实战流程。文章重点剖析了二进制安装相较于源码编译和pip安装的优势,有效规避了CUDA、PyTorch等关键组件的版本冲突陷阱,并逐步指导完成环境配置、Isaac Lab集成、Conda环境管理以及ROS2 Jazzy的集成,最终构建出完整的机器人仿真与强化学习开发平台。

kite3的博客 396

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

文章目录一、UI标签1.1 含义1.2 使用1.2.1 默认主题1.2.2 设置主题二、数据回显2.1 按照正常思路写数据回显2.2 Struts2提供的数据回显2.3 checkboxlist标签三、资源国际化3.1 Servlet和Struts资源国际化区别3.2 Struts实现资源国际化3.2.1 写资源文件3.2.2 使用常量加载资源文件3.2.3 Struts标签使用国际化 一、UI标...

且行且珍惜 245

别再让CPU干GPU的活了:CST Studio Suite GPU加速深度调优指南(从驱动版本到任务管理器监控)

本文深入探讨了CST Studio Suite的GPU加速深度调优方法,从NVIDIA驱动版本选择到系统级资源管理,再到实时监控与瓶颈诊断技术。通过科学的驱动优化、GPU资源管理策略和高级调优技巧,显著提升仿真效率,特别适合电磁仿真工程师和硬件加速需求的专业用户。

weixin_28740299的博客 164

JAVA之中fn标签的复选框回显,Struts2【UI标签、数据回显、资源国际化】

Struts2UI标签Sturts2为了简化我们的开发,也为我们提供了UI标签...也就是显示页面的标签.....但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再被浏览器解析,最后才显示在页面上的。因此,它的性能是不够HTML标签好的...HTML直接就能够被浏览器解析还有一点是:我们在写网页的时候,肯定是需要使用div+css的页面布局的。使用Struts2UI...

weixin_39729115的博客 197

DeepSeek-V4-Pro 正式版突袭上线:Agent 能力暴涨,DeepSWE 直接干翻 Claude Opus 4.8

8 月 12 日深夜,DeepSeek 悄悄在 API 文档里上架了一个新版本号——DeepSeek-V4-Pro-0813。第二天(13 日),这个版本被确认为 V4 Pro 正式版。没有发布会,没有预热,只改了版本号,就把整个 AI 圈的注意力又抢了过去。

2601_96613114的博客 838

Amesim与Simulink联合仿真:S-Function接口配置与实战避坑指南

本文详细介绍了Amesim与Simulink联合仿真中S-Function接口的配置方法与实战避坑指南。从环境搭建、编译器配置到S-Function接口实战,逐步解析关键步骤与常见问题解决方案,帮助工程师高效实现多领域系统仿真,特别适合汽车、航空航天等复杂系统建模场景。

weixin_29173777的博客 344

Struts2

Struts2 https://blog.youkuaiyun.com/qq_35064774/article/details/64934709 基础。配置,action,拦截器,Struts2UI标签,数据回显,资源国际化(省略),OGNL表达式,valueStack 基础1.为什么要引入struts? 既然Servlet能够完成的事,我们为啥要用框架呢??因为框架帮我们封装了很多常用...

weixin_30733003的博客 92

[南大ICS-PA2] 字符串处理函数和printf实现

[南大ICS-PA2] 程序、运行时环境与AM 字符串处理函数和printf实现

qq_42474104的博客 2985

Struts2 框架学习——s标签和国际化

一、s标签 在struts-2.3.15.1/docs/WW/docs/tag-reference.html下,就有着struts2所有标签的参考文献,只能看看其中比较常用的标签。其他的以后遇到了在看参考文献即可。 通用标签,control Tags 和 DataTags,下面用方框圈起来的就是我们需要了解的 1.1、if、elseif、else 标签。 这个很简单,流程控制的标签,跟...

热心网友 2481

基于Codex平台构建AI技能:抖音爆款分析与带货视频生成实战

这次我们来看一个基于 Codex 平台构建 AI 技能(Skill)的实战项目。核心目标很直接:利用 AI 能力,自动化分析抖音平台的爆款内容,并生成可用于带货的视频。这听起来像是内容创作领域的“自动化流水线”,它解决的核心痛点是:人工分析爆款、撰写脚本、制作视频的效率瓶颈。 对于技术开发者和内容创作者而言,这个项目的价值在于将“内容策略分析”和“视频内容生成”两个环节通过 Codex 的 Skill 机制串联起来,形成一个可定制、可批量执行的自动化工作流。我们最关心的几个问题包括:这个方案的技术门槛高不高

weixin_29054399的博客 484

【DeepSeek+Office/WPS】智能办公新时代的全新利器

DeepSeek是一家专注于通用人工智能技术研发的中国科技公司,其核心产品DeepSeek-R1是一款开源的推理大模型,专注于复杂任务的高效处理,支持智能对话、文本生成、语义理解、计算推理、代码生成与补全等多种应用场景。作为国产、免费、开源且强大的AI平台,DeepSeek不仅致力于为终端用户提供高质量的智能服务,还为开发者提供了一整套完善的技术解决方案,帮助他们快速构建和部署自己的智能应用。

2303_77200324的博客 2791

Struts2的国际化

”国际化“是指一个应用程序在运行时能够根据客户端请求所来自国家或者地区语言的不同而显示不同的用户界面。 引入国家化机制的目的在于提供自适应的、更友好的用户界面,而不必改变程序的其他功能或者业务逻辑。 而Struts2实现国际化的流程具体流程如下所示: (1)、不同地区使用的操作系统环境不同,如中文操作系统,英文操作系统等。获得客户端地区的语言环境后在,struts.xml文件中会找到相应的国际化资...

monkey_wei的博客 552

Rockchip eMMC寿命监控:SMART信息读取与预防性维护

擦写计数坏块数量温度使用时间。

小灰灰的博客 762

Struts2学习(五)———— s标签和国际化

一、s标签     在struts-2.3.15.1/docs/WW/docs/tag-reference.html下,就有着struts2所有标签的参考文献,只能看看其中比较常用的标签。其他的以后遇到了在看参考文献即可。     通用标签,control Tags 和 DataTags,下面用方框圈起来的就是我们需要了解的                      1.1、if、else...

weixin_33796205的博客 142

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

struts2标签详解&Struts2常用标签总结

要在jsp中使用Struts2的标志,先要指明标志的引入。通过jsp的代码的顶部加入以下的代码:   If elseif  else 描述: 执行基本的条件流转。 参数: 名称 必需 默认 类型 描述 备注 test 是   boolean 决定标志里的内容是

kimliu2009的专栏 4902

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java struts2国际化,与js资源获取

1.Java struts2国际化 2.js资源获取

dongfangyu123456的博客 1736

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

struts2标签库

struts2标签库介绍: struts2标签库不依赖任何表现层技术,其提供的大部分标签,可以在各种表现层技术中使用,分为两大类:UI标签和非UI标签,UI标签由于生成html元素标签,非UI标签用于数据访问、逻辑控制等。 UI标签分为两类:表单标签(用于生成form元素,普通表单元素的标签)和非表单标签(生成页面树,Tab页等标签),非UI标签也分为两类:流程控制标签(实现分支、循环登录流程控制...

weixin_43638314的博客 652
上一篇: Struts2【配置】知识要点
下一篇: Struts2【开发Action】知识要点
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值