Что касается окна двойного выбора Struts2 jquery

Кто-нибудь пробовал реализовать пример Struts2-jQuery?

Я могу выполнить настройку, например, указанную по ссылке ниже, но на странице нет значений.

http://struts.jgeppert.com/struts2-jquery-showcase/index.action

и в консоли не отображается ошибка, не могу догадаться, в чем проблема?

SELECTLIST.jsp

    <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %> 
<%@ taglib prefix="s" uri="/struts-tags"%>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home</title>
</head>
<body>
Reload example with two select boxes.
     <s:form id="formSelectReload" action="echo" theme="simple" cssClass="yform">
        <fieldset>
            <legend>AJAX Form</legend>
            <div class="type-text">
                <label for="language">Language: </label>
                <s:url id="remoteurl" action="jsonsample"/> 
                <sj:select 
                    href="%{remoteurl}" 
                    id="language" 
                    onChangeTopics="reloadsecondlist" 
                    name="language" 
                    list="languageObjList" 
                    listKey="myKey" 
                    listValue="myValue" 
                    emptyOption="true" 
                    headerKey="-1" 
                    headerValue="Please Select a Language"
                />
            </div>
            <div class="type-text">
                <label for="echo">Framework: </label>
                <s:url id="remoteurl" action="jsonsample"/> 
                <sj:select 
                    href="%{remoteurl}" 
                    id="selectWithReloadTopic" 
                    formIds="formSelectReload" 
                    reloadTopics="reloadsecondlist" 
                    name="echo" 
                    list="reloadList" 
                    emptyOption="true" 
                    headerKey="-1" 
                    headerValue="Please Select a Framework"
                />
            </div>
            <div class="type-button">
                <sj:submit 
                    id="submitFormSelectReload"
                    targets="result" 
                    value="AJAX Submit" 
                    indicator="indicator" 
                    button="true"
                    />
                    <img id="indicator" 
                        src="images/indicator.gif" 
                        alt="Loading..." 
                        style="display:none"
                    />
            </div>
        </fieldset>
    </s:form>
    <br/>
    Reload example with one select box and an buttonset.
     <s:form id="formSelectCheckBox" action="echo" theme="xhtml">
        <s:url id="remoteurl" action="jsonsample"/> 
        <sj:select 
            href="%{remoteurl}" 
            id="languageSelect" 
            onChangeTopics="reloadcheckboxes" 
            name="language" 
            list="languageObjList" 
            listKey="myKey" 
            listValue="myValue" 
            emptyOption="true" 
            headerKey="-1" 
            headerValue="Please Select a Language"
            label="Language"
            required="true"
        />
        <s:url id="remoteurl" action="jsonsample"/> 
        <sj:checkboxlist 
            href="%{remoteurl}" 
            id="frameworkCheckboxes" 
            formIds="formSelectCheckBox" 
            reloadTopics="reloadcheckboxes" 
            name="echo" 
            list="reloadList" 
            label="Framework"
            required="true"
            onChangeTopics="submitCheckboxForm"
        />
        <sj:submit 
            id="submitFormSelectCheckBox"
            listenTopics="submitCheckboxForm"
            targets="result" 
            value="AJAX Submit" 
            indicator="indicator2" 
            cssStyle="display : none;"
        />
    </s:form>
    <img id="indicator2" 
        src="images/indicator.gif" 
        alt="Loading..." 
        style="display:none"
    />

    <strong>Result Div :</strong>
</body>
</html>

КЛАСС ДЕЙСТВИЯ:

package showcase;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.*;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.ParentPackage;

import com.opensymphony.xwork2.ActionSupport;

@ParentPackage(value = "showcase")
public class JsonSample extends ActionSupport {

  private static final long   serialVersionUID = -2223948287805083119L;
  private static final Log    log              = LogFactory.getLog(JsonSample.class);
  private List<String>        languageList;
  private List<ListValue>     languageObjList;
  private Map<String, String> languageMap;
  private List<String>        reloadList;
  private String              language;

  @Actions( {
    @Action(value = "/jsonsample", results = {
      @Result(name = "success", type = "json" , location="/web/SelectList.jsp")
    })
  })
  public String execute()
  {

    log.info("build json lists language : " + language);

    languageList = new ArrayList<String>();
    languageObjList = new ArrayList<ListValue>();
    languageMap = new HashMap<String, String>();

    languageList.add("Java");
    languageList.add("PHP");
    languageList.add("C#");

    languageMap.put("J", "Java");
    languageMap.put("P", "PHP");
    languageMap.put("C", "C#");

    languageObjList.add(new ListValue("J", "Java"));
    languageObjList.add(new ListValue("P", "PHP"));
    languageObjList.add(new ListValue("C", "C#"));

    reloadList = new ArrayList<String>();
    if (language != null && language.equalsIgnoreCase("J"))
    {
      reloadList.add("Struts2");
      reloadList.add("MyFaces");
      reloadList.add("Tapestry");
    }
    else if (language != null && language.equalsIgnoreCase("P"))
    {
      reloadList.add("CakePHP");
      reloadList.add("Symfony");
      reloadList.add("Zend");
    }
    else if (language != null && language.equalsIgnoreCase("C"))
    {
      reloadList.add("NStruts");
      reloadList.add("ProMesh.NET");
      reloadList.add("Websharp");
    }

    return SUCCESS;
  }

  public String getJSON()
  {
    return execute();
  }

  public List<String> getLanguageList()
  {
    return languageList;
  }

  public Map<String, String> getLanguageMap()
  {
    return languageMap;
  }

  public List<ListValue> getLanguageObjList()
  {
    return languageObjList;
  }

  public List<String> getReloadList()
  {
    return reloadList;
  }

  public void setLanguage(String language)
  {
    this.language = language;
  }
}

person saharsh    schedule 04.07.2013    source источник
comment
Закрытие за оффтоп? Действительно ?   -  person Andrea Ligios    schedule 04.07.2013
comment
Столкнулся с той же проблемой, о которой сообщается здесь не загружаются данные%5d%5b1%5d">stackoverflow.com/questions/27456010/. Может ли кто-нибудь помочь мне [1]: stackoverflow.com/questions/27456010/   -  person javaguy    schedule 14.12.2014


Ответы (1)


Вам не хватает тега заголовка.

Тег "head" отображает необходимый код JavaScript для настройки jQuery и требуется для использования любого из тегов, включенных в подключаемый модуль jQuery.

  <head>
    <sj:head/>
  </head>
person Andrea Ligios    schedule 04.07.2013
comment
Популярный ответ в наши дни. :) - person Aleksandr M; 04.07.2013
comment
@Andrea Ligios: он начал работать, но проблема в списке выбора. Я получаю значения как «неопределенные» .. Не могли бы вы помочь мне дальше ... - person saharsh; 04.07.2013
comment
@AleksandrM: У вас есть какие-нибудь идеи об этом? - person saharsh; 04.07.2013
comment
Спасибо, теперь все работает нормально .. Большое спасибо .. «неопределенная» проблема также исключена. - person saharsh; 04.07.2013
comment
Рад, что помог. @AleksandrM: абсолютно верно :) - person Andrea Ligios; 04.07.2013
comment
@AndreaLigios: Еще одна вещь, которую я хотел бы знать, если вы можете мне помочь. Когда я использую конфигурацию xml, требуемый двойной выбор достижим, но когда я использую аннотацию, как показано в коде выше, это не так.. и нет сообщения об ошибке ничего так? - person saharsh; 04.07.2013
comment
Логика предполагает, что проблема в аннотациях :) Если вы не можете понять это, вы можете открыть новый вопрос, разместив аннотации и рабочий файл struts.xml рядом, чтобы мы могли его отладить. - person Andrea Ligios; 05.07.2013