5

我是 Struts2 的新手。我有用户表单,角色列有一个下拉列表。当用户窗体处于编辑模式时,存储的值被放置到相应的控件中。但是我不能默认设置下拉列表的选择值。我该怎么做?

4

6 回答 6

8

除了 Nate 的回答之外,我发现如果键类型是字符串,我需要在 value 属性中的数据周围加上撇号,以便它识别我的输入值是字符串。

于 2011-10-17T00:23:41.747 回答
6

如果您的选择标签中的值与选择标签中列表中的一个键匹配,Struts 将做正确的事情并将该值设为默认值。请注意,类型必须匹配。

https://struts.apache.org/tag-developers/select-tag.html

于 2010-09-20T12:59:45.010 回答
3

To illustrate this in an example :

<s:select name="employee.course.courseId" value="3"  label="%{getText('label.courseName')}" list="courses" listKey="courseId" listValue="courseName" />
  • Here the Employee object contains an object called "course" and it has a property "courseId"
  • listKey is selected as courseId and the listValue is selected as courseName
  • Hence the output will be like :

        <option value="1">Computer Science</option>
        <option value="2">Electronics</option>
        <option value="3">Mechanical</option>
    
  • The value attribute is set to "3" and it matches the 3rd attribute in the list, which is Mechanical

  • Therefore this will be the default selected value in the dropdown, hence the output html will be like :

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

Hope this helps.

于 2014-03-23T03:39:38.923 回答
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 文档:

注意:对于任何使用列表的标签(select 可能是最普遍的),它使用 OGNL 列表表示法(参见上面的“月”示例),应该注意创建的映射键(在月示例中, '01'、'02' 等)被输入。“1”是一个字符,“01”是一个字符串,“1”是一个字符串。这很重要,因为如果您的“value”属性返回的值与“list”属性中的键的类型不同,它们将不匹配,即使它们的 String 值可能相等。如果它们不匹配,则列表中的任何内容都不会被自动选择。

于 2014-11-20T18:50:11.603 回答
0

在下拉列表中显示所选值的正确方法是在您的操作类中创建 get 方法:

动作类:

public String getDefaultValue() {
    return "defaultVal";
} 

JSP:

<s:select theme="simple" list="yourList" name="name" id="id" listKey="id" listValue="description" value="defaultValue"/>
于 2019-12-05T21:17:02.843 回答
-1
<!--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>
于 2013-07-19T08:16:58.170 回答