Struts2的jQuery的标签选择不加载数据加载、标签、数据、jQuery

2023-09-10 15:52:40 作者:GD is GOD

我试图用标签来渲染struts2的JSP我的列表中。

在同一地点我已经使用了一个标签以及

数据得到填充,而没有数据填充到标签的标签。

Struts2的-jquer-插件版本:3.7.0 jQuery用户界面:1.8.2 Struts2的JSON的-插件版本:2.3.16.3

这也可用于:

 < SJ:头jQueryUI的=真/>
 

一个正常使用的Struts2的选择标签,给我造成

 < S:选择列表=languageList>< / S:选择>
 
职场实用干货 简单实用的图表技巧,5.6 的人还不会

但在同一个JSP只是一个又一个的div给什么,即使是同一个对象(表)的这里命名为的 languageList 时,如图中片段

 < S:URL的id =remoteurl行动=SAMPLE2/>
    < SJ:选择
        HREF =%{remoteurl}
        ID =回音
        NAME =回声
        列表=languageList
        emptyOption =真
        = -  1
        headerValue =请选择语言
/>
 

已经编辑了问题按建议。

我的意思是说,动作类返回对象 languageList 但在JSP中的用户界面不能够呈现之一, 请从O / P屏幕中查看快照更好地理解。

请帮我弄清楚什么是错在这里? 我试图复制在支柱的jQuery选择教程如图所示链接 http://struts.jgeppert.com/struts2-jquery-showcase/index.action

来源:: JSP

 <%@页面语言=Java的的contentType =text / html的;字符集= ISO-8859-1
    的pageEncoding =ISO-8859-1%>
!< D​​OCTYPE HTML PUBLIC -  // W3C // DTD HTML 4.01过渡// ENhttp://www.w3.org/TR/html4/loose.dtd">
<%@标签库的uri =/ Struts的标签preFIX =S%>
<%@ taglib伪preFIX =SJ的uri =/ Struts的jQuery的-标签%>
<%@ taglib伪preFIX =SBURI =/ Struts的引导-标签%>
< HTML>
< HEAD>
< META HTTP-当量=Content-Type的CONTENT =text / html的;字符集= ISO-8859-1>
<冠军>双Combo< /标题>

< SJ:头jQueryUI的=真/>
< SB:头includeScripts =真includeScriptsValidation =真/>
< META HTTP-当量=X-UA-Compatible的
    内容=IE = EmulateIE7; IE = EmulateIE9>
< META HTTP-当量=Content-Type的CONTENT =text / html的;字符集= UTF-8/>
< META NAME =视口
    内容=WIDTH =装置宽度,初始规模为1,最大规模= 1.0,用户可扩展性=无/>

<  - !开始的jquery  - >

&所述;脚本的src =&其中;%= request.getContextPath()%> /jq/jquery-1.8.2.min.js
    类型=文/ JavaScript的>< / SCRIPT>

&所述;脚本的src =&其中;%= request.getContextPath()%> /jq/functions.js
    类型=文/ JavaScript的>< / SCRIPT>

< /头>
<身体GT;
    < D​​IV ID =简单>
        < S:选择列表=languageList>< / S:选择>
    < / DIV>

    < S:表单ID =formSelectOne行动=回声的主题=简单
        的CssClass =yform>
        <字段集>
            <传奇> AJAX表格填充一个字符串列表< /传说>
            < D​​IV CLASS =式文本>
                <标签=回声>回声:LT; /标签>
                < S:URL的id =remoteurl行动=SAMPLE2/>
                < SJ:选择HREF =%{remoteurl}ID =回声NAME =回声
                    列表=languageListemptyOption =真headerKey = -  1
                    headerValue =请选择语言/>
            < / DIV>
            < D​​IV CLASS =式按钮>
                < SJ:提交目标=RESULT1值=AJAX的一个指标=指示
                    按钮=真/>
                < IMG ID =指标SRC =图像/ indicator.gifALT =载入中...
                    风格=显示:无/>
            < / DIV>
        < /字段集>
    < / S:形式GT;



< /身体GT;
< / HTML>
 

Action类:

 包com.action;

进口的java.util.ArrayList;
进口的java.util.HashMap;
进口的java.util.List;
进口的java.util.Map;

进口org.apache.struts2.convention.annotation *。

进口com.opensymphony.xwork2.ActionSupport;
@ParentPackage(值=橱窗)
公共类样品扩展了ActionSupport {

    私有静态最后长的serialVersionUID = -2223948287805083119L;
    私人列表<字符串> languageList;
    私人列表< ListValue> languageObjList;
    私人地图<字符串,字符串> languageMap;

    @Actions({
        @行动(
        值=/ SAMPLE2
        结果= {
        @Result(NAME =成功,键入=JSON)
        })
    })
    公共字符串的execute(){

      languageList =新的ArrayList<字符串>();
      languageObjList =新的ArrayList< ListValue>();
      languageMap =新的HashMap<字符串,字符串>();

      languageList.add(Java的);
      languageList.add(PHP);
      languageList.add(C ++);

      languageMap.put(J,Java的);
      languageMap.put(P,PHP);
      languageMap.put(C,C ++);

      languageObjList.add(新ListValue(J,Java的));
      languageObjList.add(新ListValue(P,PHP));
      languageObjList.add(新ListValue(C,C ++));

      返回成功;
    }

    公共字符串的getJSON(){
        返回的execute();
    }

    公开名单<字符串> getLanguageList()
    {
      返回languageList;
    }

    公共地图<字符串,字符串> getLanguageMap()
    {
      返回languageMap;
    }

    公开名单< ListValue> getLanguageObjList()
    {
      返回languageObjList;
    }

    公共类ListValue {
    私人字符串的myKey;
    私人字符串myvalue的;

    公共ListValue(字符串的myKey,字符串myvalue的){
      超();
      this.myKey =的myKey;
      this.myValue = myvalue的;
    }

    公共字符串getMyKey()
    {
      返回的myKey;
    }

    公共无效setMyKey(字符串的myKey)
    {
      this.myKey =的myKey;
    }

    公共字符串getMyValue()
    {
      返回myvalue的;
    }

    公共无效setMyValue(字符串myvalue的)
    {
      this.myValue = myvalue的;
    }
  }

}
 

行动样品2返回该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++"}]}

解决方案

解决了。

希望这会有所帮助别人,

我所要做的就是修改的web.xml 如下:

 <过滤器映射>
    <过滤器名称>&Struts2的LT; /过滤器名称>
    < URL模式> / *< / URL模式>
  < /过滤器映射>
  <会话配置>
 

此前我已经设置了过滤器

 <过滤器映射>
    <过滤器名称>&Struts2的LT; /过滤器名称>
    < URL模式> *动作< / URL模式>
  < /过滤器映射>
  <会话配置>
 

因此​​, Struts2的,jQuery的标签的找不到相应的的.js 的文件

解决方法:改变从< URL模式> *动作< / URL模式> < URL模式> / * < / URL模式> 因此,请务必检查的web.xml 这样的异常,往往忽略了去在我的情况。

I am trying to use tag to render my list in struts2 jsp.

At the same location I have used a tag as well

Data is getting populated in the tag whereas no data is being populated in the tag.

struts2-jquer-plugin ver: 3.7.0 jquery UI: 1.8.2 struts2-json-plugin ver:2.3.16.3

this is also used:

<sj:head jqueryui="true" />

A normal use of struts2 select tag,gives me result

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

but in the same jsp but just a another div gives nothing even when the same object (List) here named, languageList is used, as shown in the snippets

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

Have edited the Question as per the suggestion.

I mean to say that the action class is returning the object languageList but the UI in jsp is not being able to render one, please check snapshot from the O/P screen for understanding better.

Please help me figure out what is wrong here? I was trying to replicate the tutorial on struts jquery select as shown in the link http://struts.jgeppert.com/struts2-jquery-showcase/index.action

Source:: 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>

Action Class:

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;
    }
  }

}

Action Sample2 returns this 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++"}]}

解决方案

Solved.

May this be of some help to others,

All I had to do was change the web.xml as below:

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

Earlier I had set the filter as

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

So the struts2-jquery tag could not find the corresponding .js files

Solution: change from <url-pattern>*.action</url-pattern> to <url-pattern>/*</url-pattern> Thus, please be sure to check the web.xml for such anomalies which often go overlooked as in my case.