[英]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');
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.