2014-12-13 4 views
1

Я пытаюсь использовать тег <sj:select>, чтобы отобразить мой список в Struts2 jsp.struts2 jquery tag select not loading data

В том же месте я использовал тег, а

данных становится заполняемый в метке, тогда как нет данных заселяется в <sj:select> тега.

  • struts2-JQuery-плагин версии: 3.7.0
  • JQuery UI: 1.8.2
  • struts2-JSON-плагин версии: 2.3.16.3

Это также используется:

<sj:head jqueryui="true" /> 

нормальное использование struts2 выбрать тег, дает мне результат

<s:select list="languageList"></s:select> 

, но в то же JSP, а просто другой DIV ничего не дает, даже когда тот же объект (List) здесь назван, languageList используется, как показано на фрагментах

 <s:url id="remoteurl" action="sample2"/> 
    <sj:select 
     href="%{remoteurl}" 
     id="echo" 
     name="echo" 
     list="languageList" 
     emptyOption="true" 
     ="-1" 
     headerValue="Please Select a Language" 
/> 

редактировали вопрос в соответствии с предложением.

Я хочу сказать, что класс действия возвращает объект languageList, но пользовательский интерфейс в jsp не может отобразить его, пожалуйста, проверьте моментальный снимок с экрана O/P для лучшего понимания.

Пожалуйста, помогите мне выяснить, что здесь не так?

Я пытался повторить учебник по распорок JQuery выбрать, как показано в ссылке: http://struts.jgeppert.com/struts2-jquery-showcase/index.action

Источник :: JSP

<%@ 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"> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%> 
<%@ taglib prefix="sb" uri="/struts-bootstrap-tags"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Double Combo</title> 

<sj:head jqueryui="true" /> 
<sb:head includeScripts="true" includeScriptsValidation="true" /> 
<meta http-equiv="X-UA-Compatible" 
    content="IE=EmulateIE7; IE=EmulateIE9"> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" 
    content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no" /> 

<!-- begin jquery --> 

<script src="<%=request.getContextPath()%>/jq/jquery-1.8.2.min.js" 
    type="text/javascript"></script> 

<script src="<%=request.getContextPath()%>/jq/functions.js" 
    type="text/javascript"></script> 

</head> 
<body> 
    <div id="simple"> 
     <s:select list="languageList"></s:select> 
    </div> 

    <s:form id="formSelectOne" action="echo" theme="simple" 
     cssClass="yform"> 
     <fieldset> 
      <legend>AJAX Form populated by a String List</legend> 
      <div class="type-text"> 
       <label for="echo">Echo: </label> 
       <s:url id="remoteurl" action="sample2" /> 
       <sj:select href="%{remoteurl}" id="echo" name="echo" 
        list="languageList" emptyOption="true" headerKey="-1" 
        headerValue="Please Select a Language" /> 
      </div> 
      <div class="type-button"> 
       <sj:submit targets="result1" value="AJAX One" indicator="indicator" 
        button="true" /> 
       <img id="indicator" src="images/indicator.gif" alt="Loading..." 
        style="display: none" /> 
      </div> 
     </fieldset> 
    </s:form> 



</body> 
</html> 

Класс действия:

package com.action; 

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

import org.apache.struts2.convention.annotation.*; 

import com.opensymphony.xwork2.ActionSupport; 
@ParentPackage(value = "showcase") 
public class Sample extends ActionSupport{ 

    private static final long serialVersionUID = -2223948287805083119L; 
    private List<String> languageList; 
    private List<ListValue> languageObjList; 
    private Map<String, String> languageMap; 

    @Actions({ 
     @Action(
     value="/sample2", 
     results={ 
     @Result(name="success",type="json") 
     }) 
    }) 
    public String execute() { 

     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++")); 

     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 class ListValue { 
    private String myKey; 
    private String myValue; 

    public ListValue(String myKey, String myValue) { 
     super(); 
     this.myKey = myKey; 
     this.myValue = myValue; 
    } 

    public String getMyKey() 
    { 
     return myKey; 
    } 

    public void setMyKey(String myKey) 
    { 
     this.myKey = myKey; 
    } 

    public String getMyValue() 
    { 
     return myValue; 
    } 

    public void setMyValue(String myValue) 
    { 
     this.myValue = myValue; 
    } 
    } 

} 

Действие sample2 возвращается это json:

{"JSON":"success","languageList":["Java","PHP","C++"],"languageMap":{"P":"PHP","C":"C++","J":"Java"},"languageObjList":[{"myKey":"J","myValue":"Java"},{"myKey":"P","myValue":"PHP"},{"myKey":"C","myValue":"C++"}]} 
+0

Привет, фрагменты кода предназначены для предоставления runnable demos с использованием HTML/CSS/JS. Для других используйте обычный кодовый блок. Также почему этот помеченный jquery ui ..? почему это даже помечено jquery ..? Где вы используете jQuery ..? Я не могу понять ваш вопрос ... –

+0

Извините, что я новичок здесь, – javaguy

+0

Вы включаете jQuery, jQuery ui и т. Д. В свой код и помечаете вопрос тем же. Но вы не поделились никаким кодом, в котором вы используете jQuery или jQuery ui, кроме некоторых тегов расположений ... Очень сложно понять вашу проблему, как есть ... пожалуйста, пройдите через [ask] и попробуйте перефразировать вопрос. .. :) –

ответ

0

Решено.

Может ли это быть какой-то помощи другим,

Все, что я должен был сделать изменения web.xml, как показано ниже:

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <session-config> 

Ранее я установил фильтр, как

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>*.action</url-pattern> 
    </filter-mapping> 
    <session-config> 

Таким образом, struts2-jquery tag не удалось найти то, что комментируется .js файлы

Решение: изменение от <url-pattern>*.action</url-pattern> к <url-pattern>/*</url-pattern> Таким образом, пожалуйста, не забудьте проверить web.xml для таких аномалий, которые часто идут пропускаемых как в моем случае.

+0

Однако я могу сделать один сингл ct tag, но когда я пытаюсь реализовать двухкратный выбор, на котором первая выбранная опция помогает подготовить список для второго выбора, приложение не работает. Класс действия вызывается при изменении первого меню выбора, но выбранное значение не равно нулю. Любые предложения? – javaguy

0

Вам не нужно загружать jQuery дважды, разные версии могут конфликтовать друг с другом. Этот код является неправильным

<script src="<%=request.getContextPath()%>/jq/jquery-1.8.2.min.js" 
    type="text/javascript"></script> 

<script src="<%=request.getContextPath()%>/jq/functions.js" 
    type="text/javascript"></script> 

sj:select тег должен работать, если ваши действия возвращает JSON, но он использует старые обозначения. Измените его на

<s:url var="remoteurl" action="sample2"/> 
<sj:select 
    href="%{#remoteurl}" 
    id="echo" 
    name="echo" 
    list="languageList" 
    emptyOption="true" 
    headerKey="-1" 
    headerValue="Please Select a Language" 
/> 

Проверьте, чтобы jquery, json плагины находились на пути класса и работали taglib.

+0

Пробовал, что еще не работает. Кажется, что некоторые ошибки с javaguy

+0

, конечно, какая-то ошибка, как я не будучи в состоянии выполнить простой пример изменения ajax div, показанный в витрине. Либо мой плагин jquery plugin не работает, либо некоторые проблемы с конфигурацией, Может кто-то мне помочь, слишком долго застрял на этом – javaguy

+0

Я уже сказал вам удалить скрипты, загружающие jQuery. Также вы можете удалить 'sb:' taglib и плагин, потому что они не связаны с вашей проблемой. –