使用Struts 2.2.x的简单JSON示例?

时间:2011-05-06 03:33:33

标签: javascript json jsp struts2

我无法使用Struts 2.2.1.1获取JSON结果。

有没有人有一个简单的工作示例,它使用 Struts 2.2.1.1 将JSON结果返回给JSP,并准备在 Eclipse 中作为动态运行网络项目

请包含struts.xml,action类和JSP代码。另外,请注意依赖项。谢谢。

4 个答案:

答案 0 :(得分:4)

以下是使用Struts 2 jQuery插件创建简单JSON示例的方法。

  1. 转到Struts2 jQuery Plugin Showcase
  2. 导航至 Ajax表单>按钮组/复选框
  3. 查看从AJAX JSON Result 填充的 Buttonset的代码。这是我选择创建一个简单示例的代码。
  4. 在Eclipse中创建动态Web项目
  5. 创建一个Java包并将其命名为 test
  6. 下载Struts 2 jQuery plugin showcase source struts2-jquery-showcase-x.x.x-sources.jar )并解压缩JAR文件。
  7. Echo.javaJsonSample.javaListValue.java导入测试包,然后通过快速修复将代码移到包中。
  8. Echo.javaJsonSample.java中的班级注释更改为@ ParentPackage(value = "test")
  9. 除了标准的Struts 2库之外,还要确保 struts2-json-plugin-xxxjar struts2-jquery-plugin-xxxjar struts2-convention-plugin-xxxjar 文件位于类路径中。
  10. 创建struts.xml文件并添加以下XML:

    <struts>
        <constant name="struts.devMode" value="true" />
        <constant name="struts.convention.action.packages" value="test" />
        <package name="test" extends="json-default” namespace="/">
        </package>
    </struts>
    
  11. 创建index.jsp文件并插入以下代码:

    <s:form id="form2" action="echo" theme="xhtml">
     <s:url id="remoteurl" action="jsonsample" />
    <sj:checkboxlist href="%{remoteurl}" id=“remoteCheckboxlist” name="echo"  list="languageList" label="Language" />
    <sj:submit targets="formResult" value="AJAX Submit" indicator=“indicator” button="true"/>
    </s:form>
    
  12. 运行示例。

答案 1 :(得分:0)

必须参见:struts2-x.x.x-all.zip /apps/struts2-showcase-2.2.1.war

Struts 2 and JSON example
Struts 2 autocompleter + JSON example

答案 2 :(得分:0)

让Json使用struts2非常简单。

为此,

  1. 您需要将struts-json插件* (jsonplugin-0.32.jar) *添加到classpath。

  2. 您的struts.xml文件应扩展为 json-default

    <package name="base" namespace="/" extends="json-default">
    
  3. 您的行动结果是这样的。

    <result type="json"><param name="root">jsonData</param></result>
    
  4. 在内部操作类中,将json声明为

  5. private LinkedHashMap<K, V> jsonData new LinkedHashMap<k, V>();

    然后将结果列表添加到json,如

    jsonData.put("result", anyList or object);
    

    这就是我们所要做的一切。然后我们可以使用javascript访问结果

答案 3 :(得分:0)

尝试这一点,将使用jsonplugin-0.32.jar帮助您使用Struts 2.0.14。

struts.xml中:

<struts>
     <package name="example" extends="json-default">
        <action name="HelloWorld" class="example.HelloWorld"  >
            <result type="json" />
        </action>
              <action name="HelloWorld1" class="example.HelloWorld"  >
            <result name="success" >example/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

动作类Helloworld.java:

package prabhakar;

import glb.DB;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Prabhakar
 */
public class HelloWorld  {


    private List<StateMaster> stateList= new ArrayList<StateMaster>();
    private List<RegnMaster> regnList= new ArrayList<StateMaster>();

    private Integer stateId;
    public Integer getStateId()
    {
    return this.stateId;
    }
    public void setStateId(Integer stateId)
    {
    this.stateId=stateId;
    }
    public List<StateMaster> getStateList() {
        return stateList;
    }

    public void setStateList(List<StateMaster> stateList) {
        this.stateList = stateList;
    }
     public void setRegnList(List<RegnMaster> regnList) {
        this.regnList = regnList;
    }
    public List<RegnMaster> getRegnList() {
        return regnList;
    }

    public String execute() throws Exception {

        stateList=DB.getStateData()//
        if(stateId !=null)
          {
         regnList=DB.getRegnByStateId(stateId);
          }

        //setMessage(getText(MESSAGE));
        return "success";
    }

    /**
     * Provide default valuie for Message property.
     */

}

您可以直接调用HelloWorld.action来查看JSON数据,否则您可以将JSON数据绑定到下面的表单元素。

JSP页面HelloWorld.jsp:

  /*
     Prabhakar
  */

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib prefix="s" uri="/struts-tags" %>
<script>
<%@include file="../js/jquery-1.7.1.min.js"%>
</script>
    <html>

<!-- JavaScript Plugins -->
  <script>
       function getLoad(){


       var stateId = $('#state').val();

$.getJSON('HelloWorld.action', {'stateId': stateId},
    function(data) {

           var divisionList = (data.regnList);

                var options = $("#regn");
                options.find('option')
    .remove()
    .end();
     options.append($("<option />").val("-1").text("--Select--"));
$.each(divisionList, function() {

    options.append($("<option />").val(this.regnId).text(this.regnName));
});
    }
);}
   </script>

<!-- jQuery-UI Dependent Scripts -->

    <body>
        State List <s:select name="stateId" list="stateList" id="state" listKey="stateId" onchange="getLoad()" listValue="stateName" headerKey="0" headerValue="--select--" />
        Regn List <s:select name="regnId"  list="regnList" listKey="regnId" id="regn" listValue="regnName" headerKey="0" headerValue="--select--" />
    </body>
</html>

快乐编码:)