Простой пример JSON с использованием Struts 2.2.x?

#javascript #json #jsp #struts2

#javascript #json #jsp #struts2

Вопрос:

У меня возникли проблемы с получением результатов JSON, работающих с Struts 2.2.1.1.

Есть ли у кого-нибудь простой рабочий пример, который возвращает результат JSON в JSP с использованием Struts 2.2.1.1 и готов к запуску в Eclipse как динамический веб-проект?

Пожалуйста, включите struts.xml , класс действий и JSP-код. Также обратите внимание на зависимости. Спасибо.

Ответ №1:

Вот как создать простой пример JSON с использованием плагина Struts 2 jQuery.

  1. Перейдите к витрине плагина jQuery Struts2
  2. Перейдите к формам Ajax > Набор кнопок / флажков
  3. Просмотрите код для набора кнопок, который был заполнен из результата AJAX JSON. Этот код я выбрал для создания простого примера.
  4. Создать динамический веб-проект в Eclipse
  5. Создайте пакет Java и назовите его test.
  6. Загрузите исходный код плагина jQuery Struts 2 для демонстрации (struts2-jquery-showcase-x.x.x-sources.jar ) и извлеките файл JAR.
  7. Импортируйте Echo.java , JsonSample.java и ListValue.java в тестовый пакет и переместите код в пакет с быстрым исправлением.
  8. Измените аннотацию класса на Echo.java и JsonSample.java на @ ParentPackage(value = "test")
  9. В дополнение к стандартным библиотекам Struts 2, убедитесь, чтоstruts2-json-plugin-x.x.x.jar, struts2-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. Запустите пример.

Комментарии:

1. Я выполнил все вышеуказанные шаги .. но я получил это исключение: «Status 404 — / testSamples / index.jsp» .. можете ли вы, пожалуйста, мне помочь?

2. @johnnieb — Ваша ссылка мертва.

Ответ №2:

Должен видеть: struts2-x.x.x-all.zip /apps/struts2-showcase-2.2.1.war

Struts 2 и пример JSON
Автозаполнение Struts 2 пример JSON

Комментарии:

1. На витрине нет примеров. Примеры ссылок упакованы как проекты Maven. Мы — муравьиная мастерская, и я не могу заставить файлы правильно запускаться в Eclipse. Я бы предпочел иметь ZIP-архив, готовый к импорту в Eclipse.

Ответ №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<K, V> jsonData new LinkedHashMap<k, V>();

а затем добавьте список результатов в 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>
  

Удачного кодирования 🙂