1,java类
public class TSNameAction extends ActionSupport{
public Map IDname;public String execute() throws Exception {
  T_SessionService ps = ServiceFactory.getServiceInstance();
  List all = ps.queryAllTSession();
  IDname = new HashMap();
  for(int i=0;i<all.size();i++)   {   
   T_Session user = (T_Session)all.get(i);  
   IDname.put(user.getSessionid(), user.getSessionname());    
  }  
  ServletActionContext.getRequest().setAttribute("CMIDName", IDname);
  return "success";
}
public void setIDName(Map IDname){  
  this.IDname = IDname;

public Map getIDName(){  
  return IDname;
}
}2,jsp中,下拉框已经给赋值了,但是如何取出来?
<s:action name="T_SessionName" executeResult="true"></s:action>
<s:form action="T_SControlState" executeResult="true">
    <s:select
     name="ts"
     label="仿真试验盘"  
     list="#request.CMIDName"
     listKey="key"
  listValue="value">
</s:select>
<s:submit value="更新"></s:submit>  //运行的是T_SessionName.action
<a href="http://localhost:8082/struct2/casemanager/T_SControlState.action">开始</a>//这个T_SControlState.action得到的ID为null
</s:form> 3,struct.XML
<action name="T_SessionName" class="casemanager.TSePeriod.action.TSNameAction">
   <result name="success"></result>
</action>
<action name="T_SControlState" class="casemanager.TSession.action.ControlStateAction">
   <!-- 定义处理结果与视图资源之间的关系-->
   <result name="success"></result>
  </action>
4,需要选中select标签的类
public class ControlStateAction extends ActionSupport{
private String sessionid;
   private String ts;
public String getTs() {
  return ts;
}
public void setTs(String ts) {
  this.ts = ts;
}
public String getSessionid() {
  return sessionid;
}
public void setSessionid(String sessionid) {
  this.sessionid = sessionid.trim();
}
public String execute() throws Exception {
                T_SessionService ps = ServiceFactory.getServiceInstance();
  T_Session p = new T_Session();
  p.setSessionid(sessionid);
  System.out.print("8899=="+ts+" id="+sessionid);
  ps.updateTSession(p); 
  return SUCCESS;
}
}

解决方案 »

  1.   

    就是想把<s:select name="ts"...></s:select>的key传给T_SControlState.action里的ID
      

  2.   

    可以在js里用一个objec取出select中所有的值,然后做一个循环,那个值被选中就取出他的值.
      

  3.   

    给你代码
    var objConfid =document.getElementsByName("confid");
    var confid="";  
    for (i=0;i<objConfid.length;i++)
    {
    if (objConfid[i].checked)
    {
    confid = objConfid[i].value;
    objConfid[i].checked="true";
            }
    }
      

  4.   

    用脚本提交表单,select值就能传过去了。<a href="#" onclick="onsubmit()">开始</a>
    <script language="javascript">
    function onsubmit(){
    form.action="http://localhost:8082/struct2/casemanager/T_SControlState.action";
    form.submit();
    }
    <script>
      

  5.   

    struts的select标签是不是可以呢
      

  6.   

    fengsong871118 :这么写对吗?刚转WEB不熟悉。拿到的值还是为空。alert(confid)打印出来也是空。
    <script language="javascript">
      function onsubmit(){
        form.action="http://localhost:8082/struct2/casemanager/T_SControlState.action";
        form.submit();
      }
    </script>
    <body>
    <a href="http://localhost:8082/struct2/casemanager/T_SControlState.action" onclick="onsubmit()">开始</a>
    <form id="form1" name="form1" method="post" action="">
        <s:action name="T_SessionName" executeResult="true"></s:action>
        <s:select
        name="ts"
        label="仿真试验盘"  
        list="#request.CMIDName"
        listKey="key"
        listValue="value"
        onchange="selectMode(this.options.selectedIndex)">
    </s:select>

    <script language="javascript">
    function selectMode(){
      var objConfid =document.getElementsByName("ts");
      var confid="";   
              for (i=0;i<objConfid.length;i++){
                if (objConfid[i].checked){
                  confid = objConfid[i].value;
                  objConfid[i].checked="true";
                }
              }
              alert(confid);
            }  
    </script>
    </form>
      

  7.   

    1 纯js获取后填到url里面,在后台getParameter
    2 特殊标签,如struts的html:select标签,后台ActionForm已经绑定了该字段的值,不用自己关心
    3 自定义标签,类似struts的标签。也可以用js获取后填到url
      

  8.   

    你的select中都没值啊,还有我给你的那段代码你没必要重新放在一个方法里写,直接放到你的submit里就可以。
    function onsubmit(){
    var objConfid =document.getElementsByName("ts");
    var confid="";   
      for (i=0;i<objConfid.length;i++){
      if (objConfid[i].checked){
      confid = objConfid[i].value;
      objConfid[i].checked="true";
      }
      }
      alert(confid); 
      form.action="http://localhost:8082/struct2/casemanager/T_SControlState.action";
      form.submit();
      }你把你的select弄几个选项出来,这个方法肯定能得到你选的那个值。
      

  9.   

    发现没有进入到“if (objConfid[i].checked){”里面,alert(confid),没有打印“alert(objConfid[i])”打印出个OBJECT
    for (i=0;i<objConfid.length;i++){
        alert(objConfid[i]);
        if (objConfid[i].checked){
          confid = objConfid[i].value;
          alert(confid);
          objConfid[i].checked="true";
        }
      }
      

  10.   

    搞定,结贴,谢了fengsong871118,给分
    <script language="javascript">
    function onsubmit(){
      var objConfid =document.getElementsByName("ts");
      var confid="";
      for (i=0;i<objConfid.length;i++){
        confid = objConfid[i].value;
        alert(confid);
        objConfid[i].checked="true";    
      }
      document.form1.action="http://localhost:8082/struct2/casemanager/T_SControlState.action?sessionid="+confid;
      document.form1.submit();
    }
    </script><input value="kaishi" type=button onclick="onsubmit()"></input>
    <form id="form1" name="form1" method="post" action="">
    <s:select name="ts"