我试图在提交表单后保留下拉选项。 问题是s:选择值("服务器1","服务器2" ...用于服务器选择标签和" amex"," liffe& #34; ... for market select tag)始终以原始方式加载。请记住,组合是在脚本中加载的,而不是在服务器端加载的。 (我不能使用会话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);
在此先感谢,所有提案都非常苛刻。
答案 0 :(得分:0)
试试这个
$(window).load(function(){
var selectedServer = '<%= session.getAttribute("selectedServer") %>';
or
var selectedServer = "<s:property value="%{#session.selectedServer}" />";
...
$('#servers').val(selectedServer);
});