• struts2属性Struts2中属性接收参数中文问题和简单数据验证


    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生成的一些信息):

        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和属性
    ---------------------------------

  • 相关阅读:
    logstash收集nginx日志写入kafka
    Logstash收集日志写入Redis
    Nginx反向代理kibana实现认证访问
    logstash收集nginx日志写入kafka1
    201999:渗透测试,基础学习,windows基础命令,笔记
    2019910:渗透测试,基础学习
    中华吸血鬼恶意病毒分析
    磁碟机病毒分析
    利用SQL语句对不同数据库进行高效果分页
    TimeBased Blind SQL Injection with Heavy Queries
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3150414.html
Copyright © 2020-2023  润新知