Struts2.x 中自定义转换器 extends DefaultTypeConverter

JSP 做棵大树 6年前 (2018-05-08) 2174次浏览 0个评论

首先定义一个前端的页面,用于向后台进行参数的传递,同时为了完成参数的转换,我们需要自定义参数转换器

index.jsp

<center>
<s:debug></s:debug>
<s:form action="ColorChanger" method="post">
<s:textfield name="color" label="请输入形式如 “100,100,100”的内容" ></s:textfield>
<s:submit value="点击提交" ></s:submit>
</s:form>
</center>

ColorConverter.java

public class ColorConverter extends DefaultTypeConverter {

	@SuppressWarnings("unchecked")
	@Override
	public Object convertValue(Map context, Object value, Class toType) {
		if (toType == String.class) {
			// 系统的请求参数是一个字符串数组
			String[] params = (String[])value;
			//获取字符串数组中的第一个字符串,进行相关的分离
			String[] rgb = params[0].split(",");
			//定义最终返回的字符串
			String color = "#";

			for (int i = 0; i < rgb.length; i++) {
				//获取转化后的参数,并转化为 int 类型
				int a = Integer.parseInt(rgb[i]);
				if (a<=255 && a>=0) {	//判断是否合法
					//将 10 进制通过调用 Integer.toHexString 函数转化为 16 进制
					color += Integer.toHexString(a);
				}else{
					color="输入数据类型有误!";
					break;
				}
			}
			context.put("color", color);
			return color.toString();
		}
		return super.convertValue(context, value, toType);
	}

	

}

ColorChangerAction.java

package zzu.xzy.action;

import javax.servlet.ServletContext;

import org.apache.<a href="https://beatree.cn/tag/struts" title="查看更多关于 struts 的文章" target="_blank">struts</a>2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class ColorChangerAction extends ActionSupport implements ServletContextAware{
	
	private String color;
	ServletContext application = getApplication();
	
	//生成 color 的 set 和 get 方法
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	
	public ServletContext getApplication() {
		return application;
	}
	public void setApplication(ServletContext application) {
		this.application = application;
	}
	
	@Override
	public void setServletContext(ServletContext application) {
		this.application = application;
	}
	
	@Override
	public String execute() throws Exception {
		application.setAttribute("lastColor", color);
		return SUCCESS;
	}
}

以上代码文件中,index.jsp 用于对前台显示和参数的获取,ColorConverter.java 文件用于捕捉到前台传递的参数并进行相关的自定义的转换,而后将相关的参数送到 action 中进行处理。

注意:在 action 的返回值中,应当 返回  INPUT 的值

为了让编写的类型转换器生效,我们要编写一个类型转换文件ActionName-conversion.properties,指明 action 中要转换类型的参数名称,以及对应调用的类型转换器名称,把它放在对应 Action 所在包下。ActionName是指 action 的类名,因此我的类型转换文件命名为:

ColorChangerAction-conversion.properties

color=zzu.xzy.converter.ColorConverter

 

项目结构如下图

 

Struts2.x 中自定义转换器 extends DefaultTypeConverter


做棵大树 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Struts2.x 中自定义转换器 extends DefaultTypeConverter
喜欢 (0)
[欢迎投币]
分享 (0)
关于作者:
一个整天无所事事的,有时候忽然热血的孩子
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址