PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!

一:如果表单提交数据中有中文时,尽量应用post方式。

需要在Struts.xml配置文件中参加一个常量配置,如下:

<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="GBK" /><!-- internationalization -->
<package name="user" extends="struts-default" namespace="/user">
<action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">
<result>/user_add_success.jsp</result>
</action>
</package>
</struts>

但是,在Struts2 2.7之前,这个配置无效,需要其它方法设置。如下:

手动在web.xml中在Struts过滤器之前配置一个过滤器用于解决中文的问题。

二:

应用addFieldError方法和s:fieldError标签简单处置数据校验

场景:对一个用户名进行验证,如果用户名不合法,则表现给客户端查看信息。

URL请求地址:

http://localhost:8080/Struts2_1100_SimpleDataValiation/user/user!add?name=a

分析:访问的Struts2配置,namespace=”/user” action的name=”user” Action所执行的方法method=”add”并且传入了一个参数name=a.如下:

<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_add_success.jsp</result>
<result name="error">/user_add_error.jsp</result>
</action>
</package>

根据配置文件可以得悉action所对应的类为com.bjsxt.struts2.user.action.UserAction,并且拥有两个结果集(success和error).代码如下:

    每日一道理
书,各种各样的书。书,寄托着人类热切的希望;书,蕴含着人类丰富的感悟。提起书,会有说不完的话语……
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String name;
public String add() {
if(name == null || !name.equals("admin")) {
//addFieldError 添加错误信息,可以在客户端访问到。
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

根据Action类代码,可以看到Action是利用Action的成员属性(name)来接受参数值,并且应用this.addFieldError()方法添加错误信息,以便前台可以访问到。

this.addFieldError(name, errorMessage);

注:此方法是应用继承了ActionSupport父类的

name:可所以傻的属性名称,但一般建议应用哪个成员属性出题了,就用那个。以后是因为name没有通过验证,所以应用name

errorMessage:添加的信息

在客户端获得这些信息,如下:

<body>
User Add Error!
<s:fielderror fieldName="name" theme="simple"/>
<br />
<s:property value="errors.name"/>
<s:debug></s:debug>
</body>

注:应用<s:fielderror>标题,需要应用<%@taglib>命令引用Struts2的标签库如下:

<%@taglib uri="/struts-tags" prefix="s" %>

1、<s:fielderror>标签:获得应用addFieldError()方法添加的信息。

FiledName:指定信息的名称。

Theme: 指定表现的主题。

注:应用此标签获得的错误信息,Struts强制添加了css的修饰。生成的HTML代码如下(不长用):

<ul class="errorMessage">
<li><span>name is error</span></li>
<li><span>name is too long</span></li>
</ul>
Class=”errorMessage”是Struts2已经设置好的一个css了。这个方式不方便我们自定义样式。

2、<s:debug></s:debug>:这是标签的写方式,会在页面上产生一个链接,点击后表现如下(Struts2生成的一些信息):

3、<s:property>标签:获得值堆栈属性所对应的值。

<s:property value="errors.name"/>

注:value:指定值堆栈的属性名及数据下标等。

例如:value=”a” 获得Action类的成员属性a的值

Value=”errors” 获得errors属性的对象Map值

Value=”errors.name”获得errors属性的对象Map的key为name的value

Value=”errors.name[0] 获得errors属性的对象Map的key为name的value的第一个元素的值。

注:如果获得Action Context中的Key值,需要在前面加#(井号)

例如:<s:property value=”#request”/>

文章结束给大家分享下程序员的一些笑话语录:

马云喜欢把自己包装成教主,张朝阳喜欢把自己包装成明星,李彦宏喜欢把自己包装成的很知性,丁磊喜欢把自己包装的有创意,李开复总摆出一副叫兽的样子。看来的。其实我想说,缺啥补啥,人之常情。

---------------------------------
原创文章 By
struts2和属性
---------------------------------

struts2属性Struts2中属性接收参数中文问题和简单数据验证的更多相关文章

  1. Struts2中Action接收参数的方法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...

  2. Struts2中Action接收参数的方法主要有以下三种:

    Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接 ...

  3. Struts2中Action接收参数

    Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属 ...

  4. Struts2中Action接收参数的四种形式

    1.Struts2的Action接收参数的三种形式.      a. 使用Action的属性接收(直接在action中利用get方法来接收参数):                   login.js ...

  5. Struts2之Action三种接收参数形式与简单的表单验证

    有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的A ...

  6. 详细解析ASP.NET中Request接收参数乱码原理

    起因:今天早上被同事问了一个问题:说接收到的参数是乱码,让我帮着解决一下. 实际情景: 同事负责的平台是Ext.js框架搭建的,web.config配置文件里配置了全局为“GB2312”编码: < ...

  7. spring中后台接收参数总结

    @RequestParam注解用于将指定的请求参数赋值给方法的参数 @RequestMapping(“/login”) public void login(@RequestParam(name=“lo ...

  8. 探究Spring Boot中的接收参数问题与客户端发送请求传递数据

    结合此篇参考Spring框架学习笔记(9)--API接口设计相关知识及具体编码实现 在使用Spring Boot进行接收参数的时候,发现了许多问题,之前一直都很忙,最近才稍微有空研究一下此问题. 网上 ...

  9. 【Android Developers Training】 33. 接收来自其它应用的简单数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. hdu 3461 Code Lock(并查集)2010 ACM-ICPC Multi-University Training Contest(3)

    想不到这还可以用并查集解,不过后来证明确实可以…… 题意也有些难理解—— 给你一个锁,这个所由n个字母组成,然后这个锁有m个区间,每次可以对一个区间进行操作,并且区间中的所有字母要同时操作.每次操作可 ...

  2. [转] C# 泛型类型参数的约束

    啊.紫原文C# 泛型类型参数的约束 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制.如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误.这些限制 ...

  3. 标准Web系统的架构分层[转]

    标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...

  4. c++ 概念及学习/c++ concept&learning(一)

    学习过计算机组成原理就会知道,处理器会从主存中取得指令,然后进行解释执行.而他们的交流方式是以二进制方式进行的,也就是他们只能识别1和0 :其实计算机是不知道1和0的,现在的实现方式是以高电压与低电压 ...

  5. Java多线程编程模式实战指南:Active Object模式(下)

    Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...

  6. Apache Spark GraphX的简介

    简单地说,GraphX是大规模图计算框架. GraphX 是 Spark 中的一个重要子项目,它利用 Spark 作为计算引擎,实现了大规模图计算的功能,并提供了类似 Pregel 的编程接口. Gr ...

  7. JavaFX 2 Dialogs

    http://edu.makery.ch/blog/2012/10/30/javafx-2-dialogs/ ———————————————————————————————————————————— ...

  8. Caroline--chochukmo

    Caroline--chochukmo 虾米试听 Caroline, Caroline, Caroline, you pulled me into so deep down(内心深处). Caroli ...

  9. vim MiniBufExplorer 插件

    MiniBufExplorer安装好久了,但一直没怎么使用过. 今天查了下资料,作为一个备份. 当你只编辑一个buffer的时候MiniBufExplorer派不上用场, 当 你打开第二个buffer ...

  10. Mysql数据库插入的中文字段值显示问号的问题解决

    最近我使用myeclipse连接mysql数据库查询表中的数据,表中字段值为中文的字段显示问号,查了很多资料将解决方法总结如下: 步骤一:修改mysql数据库的配置文件my.ini或者my-defau ...