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玩的就是配置,玩的就是心跳。

原文地址:https://www.cnblogs.com/xusir/p/3076979.html