Даже если вы все правильно выполняете и не выбираете предварительно, вам необходимо убедиться, что возвращаемый тип ключа соответствует.
например для следующего списка
<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» - это символ, «01» - это строка, «1» - это строка. Это важно, так как если
значение, возвращаемое вашим атрибутом «значение», НЕ совпадает с типом ключа в атрибуте «список», они
НЕ будет соответствовать, даже если их значения String могут быть эквивалентными. Если они не совпадают, ничего в вашем списке
будет выбран автоматически.