簡體   English   中英

如何使用jquery / struts2在提交表單后將選擇保留在選擇中

[英]How can I keep a selection in a select after submit form by using jquery/struts2

提交表單后,我嘗試保留下拉選項。 問題是s:select值(對於服務器select標簽為“服務器1”,“服務器2” ...,對於市場select標簽為“ amex”,“ liffe” ...)始終以原始方式加載。 請記住,組合是在腳本而不是服務器端加載的。 (我不能使用會話cookie)。

我在加載時嘗試了以下選項(沒人能正常工作):

  • $('#servers > option[value='seledtedServer']').attr('selected', 'selected');
  • $('#servers.prepend($('',{value:val ['ip'],text:val ['name']})));其中val等於selectedServer。但不是我想要的標題值)。
  • s:select標記中的headerValue="%{#session.selectedServer}" ,但是當我假裝獲得“名稱”時獲得“ ip”。 我在這里嘗試過修改會話值,但是不能。

index.jsp ------------->

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2 - Connex </title>
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.0.js'></script>
<script type='text/javascript'>

            var data = [{"name":"server 1","ip":"10.10.10.1",
                            "markets":[{"name":"amex","ports":"02,17,18,19,20"},
                                       {"name":"liffe","ports":"03,05,06,07,08,25,26,27,28,29"},
                                       {"name":"lse","ports":"04,21,22,23,24"},
                                       {"name":"nasdaq","ports":"00,13,14,15,16"},
                                       {"name":"nyse","ports":"01,09,10,11,12"}]},
                        {"name":"server 2","ip":"10.10.10.2",
                            "markets":[{"name":"nyse","ports":"00,01,02,03,04,05"}]},
                        {"name":"server 3","ip":"10.10.10.3",
                            "markets":[{"name":"fxcm","ports":"00"}]}];

            $(window).load(function(){
                var selectedServer = '<%= session.getAttribute("selectedServer") %>'; // I get the "ip" but I pretended the "name"
                var selectedMarket = '<%= session.getAttribute("selectedMarket") %>'; // I get the "ports" but I pretended the "name"
                var $serverList = $('#servers');
                $.each(data, function(i, val){
                    $serverList.append($('<option />', { value: val['ip'], text: val['name'] }));
                });

                $('#servers').change(function() {
                    var selected = $(this).find("option:selected").text();
                    $.each(data, function(id, element) {
                        if (element['name'] == selected){
                            var $marketList = $('#markets');
                            $marketList.empty();
                            $.each(element['markets'], function(i, market){
                                $marketList.append($('<option />', { value: market['ports'], text: market['name'] }));
                            });
                        }
                    });
                }); 
            });
        </script>
</head>

<body>
    <h2>Struts 2 - Connex</h2>
    <s:actionerror />
    <s:form action="ejecutar.action" namespace="/" method="post">

        <div id="serverList">
                <s:select label="Select server" 
                list="{}" 
                name="servers" id="servers" headerKey="-1" headerValue=""/>
        </div>


        <div id="marketList">
                <s:select label="Select market" 
                list="{}" 
                name="markets" id="markets" headerKey="-1" headerValue=""/>
        </div>

        <div id="cmd" >
                <s:textfield label="cmd" name="cmd" />
        </div>

        <s:submit value="Submit"/>

    </s:form>    
    <s:textarea name="result" id="result" cols="60" rows="30"/>
</body>
</html> 

------------------

action.java --------------->

    private String cmd;

    private String servers;
    private String markets;

    private String result;

    // For SessionAware
    private Map<String, Object> session;
    private String selectedServer;
    private String selectedMarket;

    public String ejecutar() throws Exception {

        session = ActionContext.getContext().getSession();
        session.put("selectedServer",(String)servers);
        session.put("selectedMarket",(String)markets);  

在此先感謝,所有建議都很感激。

嘗試這個

 $(window).load(function(){
      var selectedServer = '<%= session.getAttribute("selectedServer") %>';
      or
      var selectedServer = "<s:property value="%{#session.selectedServer}" />";
      ...
      $('#servers').val(selectedServer);
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM