2010-09-20 17 views

Répondre

6

Si la valeur de votre balise select correspond à une clé de la liste de la balise select, Struts fera ce qu'il convient de faire et fera de cette valeur la valeur par défaut. Notez que les types doivent correspondre.

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

+0

Lien brisé 321 –

6

En plus de la réponse de Nate, j'ai trouvé que je dois mettre apostrophes autour des données dans l'attribut de valeur si le type de clé est une chaîne afin qu'il reconnaisse que ma valeur d'entrée est un string.

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

Pour illustrer cela par un exemple:

<s:select name="employee.course.courseId" value="3" label="%{getText('label.courseName')}" list="courses" listKey="courseId" listValue="courseName" /> 
  • Ici, l'objet de l'employé contient un objet appelé "cours" et il a une propriété "courseid"
  • listKey est sélectionné comme courseId et le listValue est sélectionné comme courseName
  • D'où la sortie sera comme:

    <option value="1">Computer Science</option> 
        <option value="2">Electronics</option> 
        <option value="3">Mechanical</option> 
    
  • L'attribut de valeur est réglée sur « 3 » et il correspond au 3ème attribut dans la liste, qui est mécanique

  • Par conséquent, ce sera la valeur par défaut sélectionnée dans le menu déroulant, donc le code html de sortie sera comme:

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

Hope this helps.

0

Même si vous suivez tout correctement et qu'il ne présélectionne pas, vous devez vous assurer que le type de retour de la clé correspond. par exemple. pour la liste suivante

<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' /> 

ne fonctionne pas, alors que

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

œuvres.

De la documentation Struts2:

Note: Pour l'une des balises qui utilisent des listes (sélection étant probablement le plus répandu), qui utilise la notation liste OGNL (voir l'exemple « mois » ci-dessus), il convient de noter que la clé de la carte créée (dans l'exemple des mois, '01', '02', etc.) est tapée. '1' est un caractère, '01' est une chaîne, "1" est une chaîne. Ceci est important puisque si la valeur retournée par votre attribut "value" n'est PAS le même type que la clé dans l'attribut "list", ils NE CORRESPONDRONT PAS, même si leurs valeurs String peuvent être équivalentes.S'ils ne correspondent pas, rien dans votre liste ne sera automatiquement sélectionné.