Struts 2中的java字符串到字符串类型转换不起作用?
我想加密用户输入并将其存储在数据库中。我使用的是Struts 2类型转换,所有用户输入都被视为String
,下面这样的转换工作正常:
String
到Integer
String
到Long
String
到byte[]
但是,当我尝试转换到目标类型:String
时,它不起作用,convertFromString()
方法也不会被调用
@Override
public Object convertFromString(Map context, String[] value, Class arg2) {
String val = value[0];
try {
return ASEEncDecUtil.encrypt(val.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
我不知道我做错了什么
是否有一种最佳实践可用于加密用户输入
# 1 楼答案
转换器的工作是执行不同格式之间的转换
它不是以某种格式获取对象、对其执行业务然后以相同格式返回的正确工具
也就是说,对于这类事情,您可以使用几种机制(如Struts2拦截器和Java EE装饰器等正交机制,或特定的操作方法,甚至是变异器/访问器),根据需要使用它们的次数/位置等因素,每种机制都更合适
最简单的方法(我是KISS范型的粉丝)是访问器/变异器方法:
# 2 楼答案
您很可能正在自定义转换器中扩展
StrutsTypeConverter
类。其中convertFromString
和convertToString
方法是从convertValue
方法调用的,看起来像这样:因此,如果
toClass
是String
类,那么convertFromString
永远不会被调用要实现您想要的,请扩展
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter
,并重写public Object convertValue(Map context, Object o, Class toClass)
方法