Struts標籤的組合使用小例

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> 

以上這段代碼能夠實現給下拉列表動態賦值,而且回顯的功能,可是標籤中的一些屬性值設置常常搞混,須要注意。spa

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中的值作比較,用於回顯。code

 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">是如何取值的呢?orm

覺得此處< bean:write name="task">和<logic:iterate id="task" name="tasknamelist"> 一同使用,因此此處的規則是 :標籤中的name屬性要跟logic:iterator中的id屬性對應上.blog

(<logic:iterator標籤會把name屬性值爲list的集合裏的bean逐一取出來,每取出來一個,就把他存到名爲id屬性的值的pageContext範圍內)it

相關文章
相關標籤/搜索