当前位置: 首页 > 面试题库 >

struts2 jQuery标签选择不加载数据

程祺
2023-03-14
问题内容

我正在尝试使用<sj:select>标记在Struts2 jsp中呈现我的列表。

在同一位置,我也使用了标签

标签中已填充数据,而标签中未填充数据<sj:select>

  • struts2-jquery-plugin版本:3.7.0
  • jQuery UI:1.8.2
  • struts2-json-plugin版本:2.3.16.3

这也被使用:

<sj:head jqueryui="true" />

正常使用struts2 select 标签,可以得到结果

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

但在同一个JSP,而只是一个内部的div给什么,即使同一对象(名单) 这里命名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中的UI无法呈现该对象,请从O / P屏幕检查快照以更好地理解。

请帮我弄清楚这里出什么问题了吗?

我试图复制有关struts jQuery
select的教程,如链接中所示: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++"}]}

问题答案:

解决了。

希望这对其他人有帮助,

我要做的就是更改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标记 找不到对应的 .js 文件

解决方案:从更改 <url-pattern>*.action</url-pattern>为。 <url-pattern>/*</url- pattern> 因此,请确保检查web.xml,这些异常通常被我忽略。



 类似资料:
  • 在模板文件头部加载标签库: <taglib name="app\portal\taglib\Portal"/> 多个标签库用英文逗号隔开: <taglib name="app\portal\taglib\Portal,app\blog\taglib\Blog"/> 把标签库放在公共头部文件头部,这样就不用每个模板文件写一次标签加载代码了

  • 我有一个servlet,它从JSP a中捕获select字段选项值的请求参数,并将其存储在请求范围中。 现在,这个servlet在处理后再次将我重定向到同一个JSP A,现在在JSP A中,我有相同的选项字段,还有类似的代码, 但由于某些原因,代码永远不会进入c:when和它直接进入otherwise部分。 虽然我已经广泛使用了JSTL,但由于某些原因我无法启动它。我知道值存在于请求范围中,并且可

  • 但这并不好。我希望标签每秒钟都可见。我想看看有多少标签。然后,如果超过X,只选择一些,但可能有一些更容易。 以下是标签中的代码: 有什么想法吗?

  • 本文向大家介绍asp.net-core 选择标签助手,包括了asp.net-core 选择标签助手的使用技巧和注意事项,需要的朋友参考一下 示例 假设您的视图被强类型化为这样的视图模型 在GET操作方法中,您将创建此视图模型的对象,设置Categories属性并将其发送到视图 在你看来 这将呈现以下标记(仅包括表单/字段的相关部分) 在表单提交中获取选定的下拉值 您可以使用与HttpPost操作方

  • 通过添加活动类手动激活 这应该有用,但不行

  • 这个问题听起来可能很奇怪,因为处理它的一个简单方法就是向这些类或id添加一个特定的类或id ...但是我的html是由其他一些工具渲染的,所以我不能管理那些特定的