Action的input和output
基础Action input概念
action的input,提供获取boolean、double、float、int、Object值的方法,它可以执行必要的转换也可以提供默认值。它也可以从http请求(通过反射)和http头信息获取属性(远程地址、方法、授权类型等)。你也可以通过keys()方法列出所有的action输入key。默认的实现是RequestInput。下面是以下用法示例:
// 从input获取字符串
String username = input.getString("username");
// 从input获取code并转换为int,如果没有code,code的默认值为100
int code = input.getInt("code", 100);
// 从input获取boolean值
boolean accepted = input.getBoolean("accepted", false);
// 复选框: 获取 key为 "interest"的数组
int[] interestsAsInt = input.getInts("interest");
String[] interestsAsString = input.getStrings("interest");
// 从input中获取对象
MyObject obj = (MyObject) input.getValue("myObject");
// 列出所有的key和其对应值
Iterator<String> iter = input.keys();
while(iter.hasNext()) {
String key = iter.next();
Object value = input.getValue(key);
System.out.println("Key: " + key + " / Value: " + value.toString());
}
// 检查input是否有指定key值
boolean hasKey = input.hasValue("code");
// 从input获取header
String agent = input.getHeader("User-Agent");
// 从input获取属性
String ip = input.getProperty("remoteAddr"); // IP of the request...
通过Action input的一个方法获取并组装一个Object的属性值
下面来说一下通过Action输入实例化一个User实体的所有属性,你可以通过一个个属性实例化User也可以通过getObject()方法实例化User
// 从ation input中出现的任何属性通过反射实例并组装User对象
User user = input.getObject(User.class);
// 你也可以注入一个已经存在的实例化对象,
// 这对更新对象的某些属性是非常有帮助的
User user = userDAO.loadById(userId);
input.inject(user);
userDAO.update(user);
最基本action output概念
Action output更像是一个map,你可以设置字符串的key,这些输出会在之后通过jsp,velocity模板,json等渲染给客户端。
output.setValue("username", username);
output.setValue("user", user);
boolean isEmpty = output.isEmpty();
// 列出所有output key和对应值
Iterator<String> iter = output.keys();
while(iter.hasNext()) {
String key = iter.next();
Object value = output.getValue(key);
System.out.println("Key: " + key + " / Value: " + value.toString());
假如你想在Action的返回结果中返回User对象。你可以将整个对象放到输出中并让视图决定使用哪些属性或者你可以提取。当你使用需要展示user对象所有属性的html表单时会非常有用。
User user = userDAO.loadById(userId);
output.setValue("theUser", user);
//或者
output.setObject(user); // that will extract all the properties and place them in the output for the view