struts json配置中遇到的问题记录
struts.xml
<package name="json" extends="json-default" namespace="/"> <action name="user" class="com.Zicheng.Action.UserAction" method="testByAction"> <result name="success" type="json"> <!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 --> <param name="root">dataMap</param> </result> </action> </package>
UserAction.java
public class UserAction extends ActionSupport {
private Map<String, Object> dataMap;
public UserAction()
{
dataMap=new HashMap<String,Object>();
}
public String testByAction() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap.clear();
User user = new User();
user.setId("123");
user.setName("JSONActionStruts2");
user.setPassword("123");
user.setSay("Hello world !");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}
/**
* Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的
* @return
*/
public Map<String, Object> getDataMap() {
return dataMap;
}
配置中遇到的问题
一、Could not find action or result There is no Action mapped for namespace / and action name . - [unknown location]
经过再三查找,最后确定是因为缺少一个包struts2-json-plugin-2.2.3.jar.
下载到这个包,此错误消息。
接下来遇到错误
二、java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
网上搜一下,缺少的是common-lang包。找一个加入进去,搞定不报错了,开心呀。
三、但是一看页面上显示的是null,这不对。所以在网上又是继续搜索,最后发现没有加getter方法,最后加了一个dataMap的get方法可以了。
struts的result方法,需要有getter/setter方法才能获取到值。
记录留下纪念。
刚学JAVA,起步有点难呀,JAVA玩的就是配置,玩的就是心跳。