J2EE劍俠行

          直覺我的J2EE應(yīng)用生涯,打造我心中的一把利劍。

          常用鏈接

          統(tǒng)計(jì)

          技術(shù)鏈接

          最新評(píng)論

          struts標(biāo)簽,請(qǐng)你走開(系列一)

          在項(xiàng)目開發(fā)的很多時(shí)候,用戶需要更友好,更容易理解的操作界面,而為了能夠達(dá)到這種表現(xiàn)界面,struts標(biāo)簽顯得力不從心,本人經(jīng)過(guò)幾個(gè)項(xiàng)目的開發(fā)當(dāng)中 逐漸的擯棄了struts標(biāo)簽,而由JSTL來(lái)做為JSP頁(yè)面的表達(dá)者。
          struts標(biāo)簽之死穴一 不支持嵌套
          看看這種常見的需求吧。一個(gè)用戶隸屬于一個(gè)職能部門,比如
          項(xiàng)目要求 職能部門有五個(gè)(亂寫的)
          1、企劃部
          2、網(wǎng)絡(luò)集成部
          3、行政部
          4、營(yíng)銷部
          5、產(chǎn)品部
          項(xiàng)目要求 一共有二個(gè)員工
          1、張三 隸屬于行政部
          2、李四 隸屬于營(yíng)銷部
          而你想把張三和李四都列表出來(lái),顯示為如下:
          姓名 部門名稱
          張三 行政部
          李四 營(yíng)銷部
          而且還需要用戶的列表鏈接到修改頁(yè)面當(dāng)中(假如只修改部門)應(yīng)該如何做呢。
          在使用struts標(biāo)簽是很難做到的,除非你非常不在意內(nèi)存的使用(亂寫技術(shù)性代碼)
          看看JSTL是如何做的吧。
          從STRUTS的ACTION當(dāng)中加載兩個(gè)對(duì)象

          List?GetAllDept? = ?UserDAO.GetAllDept(); // 取得所有部門

          List?GetALLUser?
          = ?UserDAO.GetAllUser(); // 取得所有用戶

          request.setAttribute(
          " View_Dept " ,?GetAllDept);

          request.setAttribute(
          " View_User " ,?GetALLUser);
          在頁(yè)面當(dāng)中加入對(duì)JSTL的引用
          <%@?taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"%>

          然后寫代碼如下:
          <table>

          <tr>

          <td?align="center">

          <a?href="User.do?method=EditUser&UserId=<c:out?value='${View_User.UserId}'/>">

          <c:out?value="${View_User.UserName}"?/>?</a>

          </td>

          <td?align="center">

          <c:forEach?items="${View_Dept}"?var="View_Dept">

          <c:if?test="${View_User.Dept.DeptId==View_Dept.DeptId}">

          <c:out?value="${View_Dept.DeptName}"?/>

          </c:if>????????????????????????????

          </c:forEach>

          </td>

          </tr>

          </table>

          其中View_User.Dept.DeptId表示USER表與DEPT表的一個(gè)關(guān)系(外鍵)
          你就可以看到所顯示的列表了。

          還有如果在修改用戶時(shí),則也與上面的差不多,首先在ACTION當(dāng)中加入:

          String?ModifyUserId?=?request.getParameter("GroupUserId");

          if?(ModifyUserId?==?null?&&?ModifyUserId.equals(""))?{

          //這是出錯(cuò)處理

          request.setAttribute(
          "UserMsg",?"User.ValidateUser");

          return?mapping.findForward("Fail");

          }

          DynaValidatorForm?UserActionForm?
          =?(DynaValidatorForm)?form;

          User?user?
          =?UserDAO.GetUser(ModifyUserId);????????

          List?GetAllDept?
          =?UserDAO.GetAllDept();//取得所有部門

          request.setAttribute(
          "View_Dept",?GetAllDept);

          UserActionForm.set(
          "User",?User);
          然后頁(yè)面當(dāng)中顯示如下(部門為L(zhǎng)ISTBOX),例子當(dāng)中只顯示部門
          <html:select?property="DeptAsString">????????????

          <c:forEach?items="${View_Dept}"?var="View_Dept">????????

          <c:choose>????????????????????????

          <c:when?test="${User.Dept.DeptId==View_Dept.DeptId}">

          <option????value="<c:out?value='${View_Dept.DeptId}'?/>"selected>????

          <c:out?value="${View_Dept.DeptName}"?/>????????????

          </option>????????????????????????????

          </c:when>????????????????????????????

          <c:otherwise>????????????????????????

          <option?value="<c:out?value='${View_Dept.DeptId}'?/>">????????

          <c:out?value="${View_Dept.DeptName}"?/></option>????????

          </c:otherwise>????????????????????????

          </c:choose>

          </c:forEach>

          </html:select>

          可以看到HTML的SELECT有一個(gè)DeptAsString,你可以在FORM當(dāng)中指定一個(gè)STRING的FORM屬性。
          這樣用戶的要求就可以完成了。
          本次只說(shuō)明方法,而代碼沒有經(jīng)過(guò)測(cè)試。希望大家多多觀注我的BLOG,下一次將臭罵ACTIONFROM不支持的DATE類型及解決方法。

          posted on 2006-09-25 16:36 @家軍 閱讀(457) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 武邑县| 隆回县| 汶川县| 石屏县| 罗定市| 松原市| 黄梅县| 亳州市| 都江堰市| 偏关县| 高邮市| 衡南县| 永德县| 河曲县| 突泉县| 兰溪市| 秀山| 乐昌市| 株洲市| 镇远县| 会同县| 长寿区| 德州市| 广灵县| 武隆县| 余姚市| 长治县| 翁源县| 荃湾区| 平湖市| 普安县| 东平县| 西藏| 长治市| 虹口区| 禄劝| 临邑县| 项城市| 娱乐| 昌吉市| 东丽区|