我正在使用Struts2,
我有一个属性Action,我有一个属性Person,带有“date”属性。
class Person{
Date birthDate;
//more properties
}
class MyAction implements ModelDriven<Person>{
Person person;
public String create(){
person = new Person();
}
public String save(){
MyPersistenceContext.save(person);
}
@Override
public PhysicalPerson getModel() {
return person;
}
}
<label class="col-sm-2 control-label">Birthdate</label>
<div class="col-sm-4">
<s:textfield name="birthDate" cssClass="form-control"></s:textfield>
<s:fielderror name="birthDate"
fieldName="birthDate"></s:fielderror>
</div>
当我调用“create”方法时,Input显示为MM / dd / yy(短格式),当我提交表单时,Struts将日期作为相同格式呈现,但我想管理日期格式为“dd-MM-yyyy”
我看到了这个页面
http://www.mkyong.com/struts2/how-to-configure-global-resource-bundle-in-struts-2/
但是,我认为在Filter之前调用Listener方法,并且不能正常工作。
使用Struts管理Locale全局属性的最佳方法是什么?
通过Http会话用户设置区域设置的最佳方法是什么。
问候。
答案 0 :(得分:0)
我用转换器解决了我的问题,我不知道这是不是最好的方法......但最后我能做到。
public class CustomDateConverter extends StrutsTypeConverter {
private static Logger logger = LoggerFactory.getLogger(CustomDateConverter.class);
private static final String DEFAULT_FORMAT = "dd-MM-yyyy";
private static Map<String, DateFormat> instances = new LinkedHashMap<>();
static DateFormat getInstance(String format) {
if (instances.containsKey(format)) {
return instances.get(format);
}
DateFormat dateFormat = new SimpleDateFormat(format);
instances.put(format, dateFormat);
return dateFormat;
}
@Override
public Object convertFromString(Map map, String[] values, Class aClass) {
try {
logger.info("convert from string");
DateFormat dateFormat = getInstance(DEFAULT_FORMAT);
Date date = (Date) dateFormat.parse(values[0]);
return date;
} catch (ParseException e) {
return values[0];
}
}
@Override
public String convertToString(Map map, Object o) {
logger.info("convertToString");
DateFormat dateFormat = getInstance(DEFAULT_FORMAT);
return dateFormat.format(o);
}
}
用于注册转换器
我创建了一个文件(资源)
src / main / resources / xwork-conversion.properties(Maven Structure)
下一个内容:
# syntax: <type> = <converterClassName>
java.util.Date=com.roshka.javorai.webapp.struts.converter.CustomDateConverter