首页 > 解决方案 > 在struts 2中测试迭代器值

问题描述

我想根据条件在下拉列表中选择选项。

 <s:set var="defaultState" value="customerBean.state"/>
                                        <select onchange="reflect(this);"  name="customerBean.state" class="form-control"  id="state">
                                            <option>Select</option>
                                            <s:iterator value="stateList" var="statevalue">

                                                <s:if test="%{#defaultState.equalsIgnoreCase(stateValue)}">  
                                                    <option id="stateVal" selected="selected"><s:property value="statevalue"/></option>

                                                </s:if>  
                                                <s:else>  
                                                    <option id="stateVal"><s:property value="statevalue"/></option>
                                                </s:else> 
                                            </s:iterator>
                                        </select>

这不起作用。但如果我把

<s:if test="%{#defaultState.equalsIgnoreCase('Alabama')}">

这行得通。

请帮忙。

标签: if-statementstruts2

解决方案


你检查过这不是一个简单的错字吗?在您的代码中,您正在使用stateValueand statevalue

旁边是stateList一个简单的列表还是 bean 列表?对于第二个选项,您必须使用类似stateValue.value.

另一种选择:因为它是一个 OGNL 表达式,你也可以尝试#statevalue. 但我永远不确定何时使用#,何时不使用。

另一种选择:使用 struts 标记s:select并使用value属性预选选项。


推荐阅读