【问题标题】:Display selected values in dropdown box in struts 2 page在struts 2页面的下拉框中显示选定的值
【发布时间】:2022-01-21 18:51:12
【问题描述】:

在 struts 2 页面的所有可用部门的下拉列表中突出显示选定的部门。 表单bean是这样构造的

public class HistForm  {
    private List deptSelectList=new ArrayList(); //holds all departments in ta list of NameValueTO

    private SearchTO search= new SearchTO();

    public List getDeptSelectList() {
        return deptSelectList;
    }
   
    public void setDeptSelectList(List deptSelectList) {
        this.deptSelectList = deptSelectList;
    }
    
    public SearchTO getSearch() {
          return search;
    }

    public void setSearch(SearchTO search) {
        this.search = search;
    }
}

public class SearchTO implements Serializable  {
    private String[] deptFilter = new String[0];
    public String[] getDeptFilter() {
        return deptFilter;
    }

  public void setDeptFilter(String[] deptFilter) {
        this.deptFilter = deptFilter;
    }
}

public class NameValueTO  implements java.io.Serializable {
  private String name;
  private String value;

  public NameValueTO() {
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getValue() {
    return value;
  }

  public void setValue(String value) {
    this.value = value;
  }     
}

我喜欢通过使用 HistForm.deptSelectList 中的所有可用部门对其进行迭代来突出显示 search.deptFilter 的 String[] 中的选定部门。所以我在我的 jsp 页面中这样写,但如果条件 <s:if test="%{selectedDept == #dept.name}"> 不起作用。也不确定这是否是从所有部门中显示选定部门的正确方式。

这是我迭代和显示部门的jsp的完整代码。 dept.name 包含部门编号,value 包含它的文本值。

<select name="search.deptFilter" id="search.deptFilter" multiple="multiple" size="5" onchange="getClasses()">
  <option value="-1">Select a Deparment </option>
  
  <s:if test="%{search.deptFilter != NULL && search.deptFilter.length > 0}">
    <s:iterator value="search.deptFilter" var="selectedDept">
      <s:iterator value="deptSelectList" var="dept">
          <s:if test="%{selectedDept == #dept.name}">
              <option value="<s:property value='%{#dept.name}'/>" selected="selected"><s:property value="%{#dept.value}"/>-SELECTED</option>
            </s:if>

            <s:else >
              <option value="<s:property value='%{#dept.name}'/>"><s:property value="%{#dept.value}"/></option>
            </s:else>   
        </s:iterator>
    </s:iterator>
  </s:if>

  <s:else>
    <s:iterator value="deptSelectList" var="dept">
      <option value="<s:property value='%{#dept.name}'/>"><s:property value="%{#dept.value}"/></option>
    </s:iterator>   
  </s:else>
 </select>

不确定为什么 if 条件不成立,因为两者都是字符串类型。不确定它的正确语法是什么。尝试了几件事,但都没有结果。

【问题讨论】:

  • 您是否将 JSP 中的值记录为完整性检查(例如,在 HTML 注释中)?
  • 在 Eclipse 调试窗口转发到页面之前,我确实看到了这些值

标签: jsp struts2 ognl struts-tags


【解决方案1】:

以这种方式修复它。

<select name="search.deptFilter" id="search.deptFilter" multiple="multiple" size="5" onchange="getClasses()">
                <option value="-1">Select a Department </option>
                    <s:if test="%{search.deptFilter != NULL && search.deptFilter.length > 0}">
                    <s:iterator value="%{deptSelectList}" var="dept">
                            <option value="<s:property value='%{#dept.name}'/>" 
                            <s:if test="%{#dept.name in search.deptFilter}">
                                selected="selected"
                            </s:if> 
                                >
                                    <s:property value="%{#dept.value}"/>
                            </option>
                    </s:iterator>   
                    </s:if>
                    <s:else>
                        <s:iterator value="deptSelectList" var="dept">
                            <option value="<s:property value='%{#dept.name}'/>"><s:property value="%{#dept.value}"/></option>
                        </s:iterator>   
                    </s:else>
            </select>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多