Struts标签<bean:write><logic:iterate></logic:equal>的组合使用小例

本文介绍了一段Struts表单中的下拉列表控件代码,该代码能够实现动态赋值及回显功能。文章详细解析了如何通过&lt;logic:notEmpty&gt;和&lt;logic:iterate&gt;标签从request域获取集合数据,以及如何利用&lt;logic:equal&gt;和&lt;bean:write&gt;进行值的比较与输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

form表单中的一个下拉列表控件的代码如下

             <select name="taskname" id="taskname" class="select01">
                 <option value="">-任务类型-</option>     
                 <logic:notEmpty name="tasknamelist">
                    <logic:iterate id="task" name="tasknamelist">
                        <logic:equal name="task" value="${taskname}">
                            <option value="<bean:write name="task" />" selected="selected"><bean:write name="task" /></option>
                        </logic:equal>
                        <logic:notEqual name="task" value="${taskname}">
                            <option value="<bean:write name="task" />"><bean:write name="task" /></option>
                        </logic:notEqual>
                     </logic:iterate>
                  </logic:notEmpty>
              </select> 

以上这段代码可以实现给下拉列表动态赋值,并且回显的功能,但是标签中的一些属性值设置经常搞混,需要注意。

1.<logic:notEmpty name="tasknamelist"> 和 <logic:iterate id="task" name="tasknamelist">  通过name取值,这说明在代码中一定有如下的类似代码:(向request等域中赋值)

request.setAttribute("tasknamelist", tasknamelist);

2.<logic:equal name="task" value="${taskname}"> Struts标签中不能嵌套,所以如果此处value值是动态的,通过EL表达式来获取,对应的在代码中一定有类似如下代码:(向request等域中赋值)

request.setAttribute("taskname", tasknamelist);

在刚开始加载页面的时候此处taskname为“”空,后期用于和tasknamelist中的值做比较,用于回显。

 3.<option value="<bean:write name="task" />" selected="selected"><bean:write name="task" /></option>

< bean:write name="task">  查阅资料,都表示在代码中一定会有  request.setAttribute("task", task); 这种类似的代码。但是我在项目中发现确实没有这种代码?那么<bean:write name="task">是如何取值的呢?

以为此处< bean:write name="task">和<logic:iterate id="task" name="tasknamelist"> 一同使用,所以此处的规则是 :标签中的name属性要跟logic:iterator中的id属性对应上.

(<logic:iterator标签会把name属性值为list的集合里的bean逐一取出来,每取出来一个,就把他存到名为id属性的值的pageContext范围内)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值