如何使用jquery / struts2在选择提交表单后保留选择

时间:2014-06-04 15:01:58

标签: javascript jquery struts2

我试图在提交表单后保留下拉选项。 问题是s:选择值("服务器1","服务器2" ...用于服务器选择标签和" amex"," liffe& #34; ... for market select tag)始终以原始方式加载。请记住,组合是在脚本中加载的,而不是在服务器端加载的。 (我不能使用会话cookie)。

我在加载时尝试了这些选项(没有人正常工作):

  • $('#servers > option[value='seledtedServer']').attr('selected', 'selected');
  • `$(' #servers.prepend($('',{value:val [' ip'],text:val [' name& #39;]}));其中val等于selectedServer。(此处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);  

在此先感谢,所有提案都非常苛刻。

1 个答案:

答案 0 :(得分:0)

试试这个

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