<select  id="flabel1"  name="tcardGreetings.flabel1" onchange="change1()">
   <s:iterator value="tshareTreeModel" id="id">
    <s:iterator value="#id">
     <option value="${fid }" >${ftitle }</option>
</s:iterator>
</s:iterator>
  </select>
通过struts2传递1个参数过来,在该页面可以用${flabel1Title }显示,想在想要在     <s:iterator value="#id">
     <option value="${fid }" >${ftitle }</option>
</s:iterator
该遍历里面判断如果${flabel1Title } 值等于${ftitle }  则为选中状态,如何用s:if标签实现,或者其他方法也行,网上找了好多都没找到符合我的例子啊...  s:if标签里面不知道怎么判断。声明下哦,我用s:if实验了很多次都不成功,并不是我自己没任何思考就拿来问大家了,实在是搞烦了
还有一个 function flabel2Callback(flabel2s)
{
  DWRUtil.removeAllOptions("flabel2");
      for(var i=0;i< flabel2s.length;i ++){
        var value = flabel2s[i].fid;
        var text = flabel2s[i].ftitle;
        var option = new Option(text, value);
        try{
          $("flabel2").add(option);
          
        }catch(e){
        }
      }
}在这里面怎么判断${flabel1Title } 值等于option的value值 然后为selected状态啊
小弟js不太熟悉,只是看的懂,不太会写的层次....
大家帮个忙哦...

解决方案 »

  1.   

    我没有用过你的这个s标签,但是教你一个万能的东东,肯定行,用js,在<body>里加一个onload=“”,
    在脚本里取到你的${flabel1Title },取到<select>,然后得到<select>的所有<option>的集合,遍历这个集合,取得每一个<option>的innerText,看看是不是等于${flabel1Title },等于的话就把这个<option>的  select  改为  turn,不会脚本的话说一下 ,帮你写。
      

  2.   

    谢谢喽  上面我已经说了 看的懂js脚本  写不出(对js的一些语法啊什么的不清楚)  没到达那个层次 呵呵  麻烦大哥帮忙啊写下哦
      

  3.   

    刚吃饭去了<script language="javascript">  function selectOne(){    var flabel1Title = $('flabel1Title');
        var flabel1 = $('flabel1');
        var optionSet = flabel1.options;
        for(var i=0;i<optionSet.length;i++){
          var optionThis = optionSet[i];
          if(optionThis.innerText == flabel1Title){
            optionThis.selected = ture;
          }
        }  }</script>把你的<body>里加上 onload="selectOne();"再在<form>的下面加一个影藏域,如下:
    <input type="hidden" id="flabel1Title" value="" />
    这个影藏域的value就是你上面所说的${flabel1Title }。明白了吧
      

  4.   


     <s:iterator value="#id">
       <option value="${fid }" <s:if test="${ftitle==flabel1Title}">selected="true"</s:if> >${ftitle }</option>
     </s:iterator>
      

  5.   

    大哥,你的方法是不是要改为这样啊 var flabel1Title = $('flabel1Title').value;
    没加。value用alert弹出的值为[object] 要加。value才行,还有<input type="hidden" id="flabel1Title" value="" />  value="${flabel1Title }"   呵呵 要不然空值了哦
    你的方法我测试了  flabel1Title值和optionThis.innerText 都相等,但if条件不会执行。
    是不是不能用等号判断啊,flabel1Title值是字符串不是数字呢  最后还有个疑问,因为option数据是通过加载数据库获得的数据,也就是打开页面的时候会去加载。你用onload方法是不是不好吧,因为option不见得会先比onload先执行啊。而且我也测试了,一开始循环里面用alert(optionThis.innerText);方法会把所有数据给弹出来,后来在刷新页面的时候只能弹出2个数据来(总共4条数据),是不是数据库还没读取完就开始加载onload方法了啊...
      

  6.   

    5楼大哥  struts2标签不支持EL的你那方法不行  ,我改成这样也不行
    <option value="${fid }" <s:if test="#{ftitle==flabel1Title}">selected="true"</s:if> >${ftitle }</option>了  默认被selected是另外。比如我option有4个 值分别是a,b,c,d ,默认selected的是a我加了上面这代码后,默认的竟然是d了。但我要的不是d啊..
      

  7.   


        <s:iterator value="#id">
         <s:if test="#{ftitle!=flabel1Title}">
         <option value="${fid }" selected="selected">${ftitle }a </option>
    </s:if>
    <s:else>
         <option value="${fid }" >${ftitle }b </option>
         </s:else>
    </s:iterator>我在${ftitle }后面加了个字母  刷新页面的时候,竟然下拉框里面后面都带了a,也就是说s:else根本没进去 怎么回事啊PS:我已经连续三次留言啊 ,哪位好心的大哥大姐帮忙在下面留个言啊,因为csdn设置了不能连续超过3次回复的呀
      

  8.   

    <option value="${fid }" <s:if test="ftitle==flabel1Title">selected</s:if> >${ftitle }</option>
      

  9.   

    要么写脚本 在body 中 onload下脚本,用脚本控制,要么就想9楼的那样
    <option value="${fid }" <s:if test="ftitle==flabel1Title">selected</s:if> >${ftitle }</option>