【问题标题】:Simple JSON example using Struts 2.2.x?使用 Struts 2.2.x 的简单 JSON 示例?
【发布时间】:2011-05-06 03:33:33
【问题描述】:

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

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

请包括struts.xml、动作类和JSP 代码。另外,请注意依赖关系。谢谢。

【问题讨论】:

    标签: javascript json jsp struts2


    【解决方案1】:

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

    1. 转到Struts2 jQuery Plugin Showcase
    2. 导航到 Ajax 表单 > 按钮集/复选框
    3. 查看从 AJAX JSON 结果填充的 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 导入到test 包中,并通过快速修复将代码移到包中。
    8. Echo.javaJsonSample.java中的类注解改为@ParentPackage(value = "test")
    9. 除了标准的 Struts 2 库之外,确保 struts2-json-plugin-x.x.x.jarstruts2-jquery-plugin-x.x.x.jar >struts2-convention-plugin-x.x.x.jar 文件在你的类路径中。
    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. 运行示例。

    【讨论】:

    • 我已按照上述所有步骤操作..但我得到了这些异常:“状态 404 - /testSamples/index.jsp”..你能帮帮我吗?
    • @johnnieb - 您的链接已失效。
    • @dcp 感谢您的提醒。现在已经修好了。
    【解决方案2】:

    必看:struts2-x.x.x-all.zip /apps/struts2-showcase-2.2.1.war

    Struts 2 and JSON example
    Struts 2 autocompleter + JSON example

    【讨论】:

    • 陈列柜没有示例。链接示例打包为 Maven 项目。我们是一家 Ant 商店,我无法让文件在 Eclipse 中正常运行。我希望有一个可以导入 Eclipse 的 ZIP 存档。
    【解决方案3】:

    让 Json 与 struts2 一起工作非常简单。

    为此,

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

    2. 你的 struts.xml 文件应该扩展 json-default

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

      <result type="json"><param name="root">jsonData</param></result>
      
    4. 在action类里面,声明json为

    private LinkedHashMap&lt;K, V&gt; jsonData new LinkedHashMap&lt;k, V&gt;();

    然后将结果列表添加到json就像

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

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

    【讨论】:

      【解决方案4】:

      试试这个,将在 Struts 2.0.14 中使用 jsonplugin-0.32.jar 帮助您。

      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>
      

      编码愉快:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 2011-08-10
        相关资源
        最近更新 更多