2010-09-20 55 views

回答

6

如果您選擇的標籤值從選擇標籤列表中的密鑰相匹配,Struts將會做正確的事情,並讓該值的默認值。請注意,這些類型必須匹配。

http://struts.apache.org/docs/select.html

+0

Broken link 321 – 2018-01-15 10:14:50

6

除了Nate的回答,我發現,我需要把周圍的值屬性的數據單引號如果密鑰類型,以便它認識到,我的輸入值是一個字符串一個字符串。

0
<!--name attribute inside select tag must be a variable in action class with getter/setter --> 
<!-- test variable sets the value of selected item in action class --> 
<select name="test"> 
    <!-- name attribute could be anything you want but value attribute must be a model class variable--> 
    <s:set name="lead_string_LS_ID" value="MasterDataModel.string_LS_ID" /> 
     <!-- value attribute must be a list to iterate, status (an instanceof IteratorStatus will be pushed into stack upon each iteration)or result --> 
     <!-- var Name used to reference the value pushed into the Value Stack (my list contain leadSource_String_Id)--> 
     <s:iterator value="leadSource_list" status="result" var="leadSource_String_Id"> 
       <!--#lead_string_LS_ID is value taken from <set> tag above. Note # must be in-front of the name 
        leadSource_String_Id is element specified in var of <iterator> tag 
       --> 
       <s:if test='(#lead_string_LS_ID.equals(leadSource_String_Id))'> 

        <option value="<s:property value='leadSource_String_Id'/>" selected="selected"> 
         <s:property value="leadSource_String_Name" /> 
        </option> 
       </s:if> 
       <s:else> 
        <option 
         value="<s:property value='leadSource_String_Id'/>"> 
         <s:property value="leadSource_String_Name" /> 
        </option> 
       </s:else> 
     </s:iterator> 
</select> 
3

要在一個例子說明這一點:

<s:select name="employee.course.courseId" value="3" label="%{getText('label.courseName')}" list="courses" listKey="courseId" listValue="courseName" /> 
  • 這裏Employee對象包含稱爲 「過程」 的對象,它有 一個屬性 「courseId」
  • listKey被選擇作爲courseId和listValue被選擇爲 courseName
  • 因此,輸出將是這樣的:

    <option value="1">Computer Science</option> 
        <option value="2">Electronics</option> 
        <option value="3">Mechanical</option> 
    
  • value屬性被設置爲「3」和它在 列表中,這是機械的第三屬性匹配

  • 因此這將是在下拉的默認選擇的值, 因此輸出HTML會像:

    <option value="1">Computer Science</option> 
        <option value="2">Electronics</option> 
        <option value="3" selected="selected">Mechanical</option> 
    

希望這有助於。

0

即使您正確地執行了所有操作並且它沒有預先選擇,那麼您需要確保該鍵的返回類型匹配。 例如對於下面的列表

<select onchange="showHideDefDiv('typeListId')" style="selectCss50" class="selectCss50" id="typeListId" name="definitionDiv_I"> 
    <option value="blank"> </option> 
    <option selected="selected" value="definitionDiv_I">I</option> 
</select> 

<s:select list="%{editRulePojo.groupPojoList}" listKey="%{groupType}" 
      listValue="%{groupTypeValue}" value='definitionDiv_I' /> 

不起作用,而

<s:select list="%{editRulePojo.groupPojoList}" listKey="%{groupType}" 
      listValue="%{groupTypeValue}" value='%{editRulePojo.groupType}' /> 

作品。

從Struts2的文檔:

注:對於任何使用列表標籤的(選擇可能是最普遍的),它使用OGNL列表 符號(見上面的「月」的例子),應該注意的是,創建的地圖鍵(在月例中, '01','02'等)被鍵入。 「1」是一個char,「01」是一個字符串,「1」是一個字符串。這很重要,因爲如果 由「值」屬性返回的值與「列表」屬性中的鍵不是同一類型,即使它們的字符串值可能相等,它們也不會匹配。如果它們不匹配,則將自動選擇列表 中的任何內容。