Struts2 jQuery плагин GridTag

Я пытаюсь реализовать в своем приложении тег сетки Struts2-JQuery, но я не знаком с JSON, поэтому у меня возникли проблемы с этим процессом... Что не так?

Оригинальный пример использует аннотацию для класса действия @Result(name = "success", type = "json"), но я использую конфигурацию xml:

   <package name="default" namespace="/" extends="struts-default">
   ...
   </package>
   <package name="showcase" extends="struts-default, json-default" namespace="/">
        <action name="jgrid" class="com.user.action.GridDataProvider" method="execute" > //line 106
            <result name="success" type="json">/tabs.jsp</result>//line 107
        </action>
   </package>

результат

Unable to load configuration. - action -
file:/C:/struts2worksp/Struts2HiberQuize_4/target/classes/struts.xml:106:84
... Caused by: Unable to load configuration. - action -
file:/C:/struts2worksp/Struts2HiberQuize_4/target/classes/struts.xml:106:84
... Caused by: There is no result type defined for type 'json' mapped
with name 'success'.  Did you mean 'json'? - result -
file:/C:/struts2worksp/Struts2HiberQuize_4/target/classes/struts.xml:107:45

из класса действий

public String execute() {
        log.debug("Page " + getPage() + " Rows " + getRows()
                + " Sorting Order " + getSord() + " Index Row :" + getSidx());
        log.debug("Search :" + searchField + " " + searchOper + " "
                + searchString);

        Object list = session.get("mylist");
        if (list != null) {
            myCustomers = (List<Customer>) list;
        } else {
            log.debug("Build new List");
            myCustomers = new CustomerDAO().getList();
        }

        if (sord != null && sord.equalsIgnoreCase("asc")) {
//          Collections.sort(myCustomers);
        }
        if (sord != null && sord.equalsIgnoreCase("desc")) {
//          Collections.sort(myCustomers);
//          Collections.reverse(myCustomers);
        }

        // Count all record (select count(*) from your_custumers)
        records = CustomerDAO.getCustomersCount(myCustomers);

        if (totalrows != null) {
            records = totalrows;
        }

        // Calucalate until rows ware selected
        int to = (rows * page);

        // Calculate the first row to read
        int from = to - rows;

        // Set to = max rows
        if (to > records)
            to = records;

        if (loadonce) {
            if (totalrows != null && totalrows > 0) {
                setGridModel(myCustomers.subList(0, totalrows));
            } else {
                // All Custumer
                setGridModel(myCustomers);
            }
        } else {
            // Search Custumers
            if (searchString != null && searchOper != null) {
                int id = Integer.parseInt(searchString);
                if (searchOper.equalsIgnoreCase("eq")) {
                    log.debug("search id equals " + id);
                    List<Customer> cList = new ArrayList<Customer>();
                    Customer customer = CustomerDAO.findById(myCustomers, id);


                    if (customer != null)
                        cList.add(customer);

                    setGridModel(cList);
                } else if (searchOper.equalsIgnoreCase("ne")) {
                    log.debug("search id not " + id);
//                  setGridModel(CustomerDAO.findNotById(myCustomers, id, from, to));
                } else if (searchOper.equalsIgnoreCase("lt")) {
                    log.debug("search id lesser then " + id);
//                  setGridModel(CustomerDAO.findLesserAsId(myCustomers, id, from, to));
                } else if (searchOper.equalsIgnoreCase("gt")) {
                    log.debug("search id greater then " + id);
//                  setGridModel(CustomerDAO.findGreaterAsId(myCustomers, id, from, to));
                }
            } else {
//              setGridModel(CustomerDAO.getCustomers(myCustomers, from, to));
            }
        }

        // Calculate total Pages
        total = (int) Math.ceil((double) records / (double) rows);

        // only for showcase functionality, don't do this in production
        session.put("mylist", myCustomers);

        return SUCCESS;
    }

JSP

<s:url id="remoteurl" action="jgrid" namespace="/grid"/>
    <sjg:grid
        id="gridtable"
        caption="Customer Examples"
        dataType="json"
        href="%{remoteurl}"
        pager="true"
        gridModel="gridModel"
        rowList="5,10"
        rowNum="5"
        rownumbers="true"
    >
        <sjg:gridColumn name="id" index="id" title="ID" formatter="integer" sortable="false"/>
        <sjg:gridColumn name="name" index="name" title="Name" sortable="true"/>
        <sjg:gridColumn name="country" index="country" title="Country" sortable="false"/>
        <sjg:gridColumn name="city" index="city" title="City" sortable="false"/>
        <sjg:gridColumn name="creditLimit" index="creditLimit" title="Credit Limit" formatter="currency" sortable="false"/>
    </sjg:grid>

1 ответ

Вы загружаете неправильный файл конфигурации struts.xml, json тип результата определяется плагином struts2-json в пакете json-default, Если вы используете этот тип для результатов в вашем пакете, вы должны либо расширить пакет, в котором определен этот тип результата, либо определить этот тип результата в пакете, который содержит результаты с этим типом. json У результата нет атрибута по умолчанию, поэтому вы не должны его использовать. Тело тега может использоваться для различных параметров, используемых этим результатом.

Другие вопросы по тегам