• Struts笔记3


    struts标签

    form表单标签

    Action:请求地址。直接写动作名称,不用写contextPath

    <s:form action="/user/register.action">
    

    method:请求方式,默认是post请求,可以不用写

    enctype:静音编码的MIME类型

    Struts2-表单验证-服务端Action验证

    struts自带表单字段验证

    第一种:重写validate方法,如果数据不对,可以往FieldError添加错误信息

    public void validate() {
    		//判断用户名是否为null
    		if(StringUtils.isEmpty(user.getUsername())) {
    			addFieldError("username","用户名不能为null");
    		}
    	}
    
    	//一旦FiledError有数据就不会执行register方法
    	public String register(){
    		System.out.println("register....");
    		System.out.println(user);
    		
    		return NONE;
    	}
    

    注意:表单一定要与struts标签结合使用表单验证才会有效:

    在进行表单提交的时候会优先调用validate方法,如果FieldError有错误信息就不会执行其他方法。对于action来说validate方法是全局的

    package com.gyf.web.action;
    
    
    import com.gyf.service.IUserService;
    import com.gyf.service.impl.UserServiceImpl;
    
    import org.apache.commons.lang3.StringUtils;
    
    import com.gyf.model.User;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    public class UserAction extends ActionSupport implements ModelDriven<User> {
    	
    	private User user = new User();
    	@Override
    	public User getModel() {
    		return user;
    	}
    	
    	public String register(){
    		System.out.println("register....");
    		System.out.println(user);
    		
    		return NONE;
    	}
    	
    	public String list() {
    		return "list";
    	}
    	@Override
    	public void validate() {
            System.out.println(user.getUsername());//直接通过action访问list时打印为null
    		//判断用户名是否为null
    		if(StringUtils.isEmpty(user.getUsername())) {
    			addFieldError("username","用户名不能为null");
    		}
    	}	
    }
    
    

    现在通过action来访问jsp页面出错,因为FieldError有数据,所以不执行list方法

    img

    现在使用注解的方式,使用list方法时来跳过执行validate方法

    @SkipValidation
    	public String list() {
    		return "list";
    	}
    

    跳过了validate方法的执行,可以正常访问list,证明了validate方法时具有全局性的

    img

    struts2-表单验证-xml声明式验证

    全局声明方式

    1.在action包中声明UserAction-validation.xml文件格式类名-U-validation.xml

    2.这种方式配置是全局配置,所有action的方法都会拦截验证

    3.如果其他方法不想验证,可配置@SkipValidation注解

    4.dtd约束可以在xwork-core的jar包中找img

    局部声明方式

    在action包中声明UserAction-register-validation.xml文件,声明格式Action 类名-方法名-validation.xml

    Struts2的国际化

    软件的国际化:要使他能同时应对世界不同地区和国家的访问。并针对不同地区和国家的访问,提供相应的,符合来访者阅读习惯的页面或数据

    创建一个消息资源包

    一个资源包由多个文件组成,这些文件名都有命名规范:主要文件名_语言代码_国家代码.properties

    语言代码和国家代码:有iso规定的

    当文件只有主要文件名.properties时,表明他是默认资源包。浏览器会根据不同的语言环境找对应语言环境的资源包

    当没有时,找默认的

    每个资源包的内容都由相同的key和对应语言环境value组成

    img

    读取国际化资源文件

    package com.gyf.test;
    
    import java.util.Locale;
    import java.util.ResourceBundle;
    
    import org.junit.Test;
    
    public class I18NTest {
    	@Test
    	public void test1() {
    		//默认读取的是中文
    		//ResourceBundle rb = ResourceBundle.getBundle("resources.message");//包名加文件名
    		//指定读取某个国家
    		ResourceBundle rb = ResourceBundle.getBundle("resources.message",Locale.US);
    		System.out.println(rb.getString("login.username"));
    		System.out.println(rb.getString("login.password"));
    		System.out.println(rb.getString("login.submit"));
    	}
    }
    
    

    Struts的国际化

    配置资源包

    img

    读取资源包

    img

  • 相关阅读:
    Mac开发者常用的工具
    10个常见的缓存使用误区
    果壳摘选
    WPF 无缝图片滚动
    WinForm 子线程修改主线程(UI线程)
    如何在WinForm中发送HTTP请求
    新闻接口调用之新浪滚动新闻
    使用json-lib进行Java和JSON之间的转换
    转载 一位程序员的妻子讲述她老公教给她了什么
    sae 上传文件 java实现
  • 原文地址:https://www.cnblogs.com/train99999/p/11148844.html
Copyright © 2020-2023  润新知