分享java带来的快乐

我喜欢java新东西

重新总结struts标签嵌套错误

首先,上一篇中转的html:select标签的示例二中的嵌套是错误的。

其實struts標簽是不能夠嵌套的;
例一:<logic:iterate id="cl" name="Ids"> //循环取得id  
            //比较beanname中的id是否和cl中的id相同,如果相同就显示cl中的name     
              <logic:equal name="beanname" property="id" value="<bean:write name="cl" property="id"/>">      
                  <bean:write name="cl" property="name"/>
          </logic:equal>
        </logic:iterate>  
        紅色文字區就是錯誤的嵌套了,這樣是得不到想要的結果的,可改爲
        <logic:iterate id="cl" name="Ids"> //循环取得id
             <bean:define id="temId" name="cl" property="id" type="java.lang.String"/>
              //比较beanname中的id是否和cl中的id相同,如果相同就显示cl中的name
              <logic:equal name="beanname" property="id" value="<%=temId%>">      
                    <bean:write name="cl" property="name"/>
          </logic:equal>
        </logic:iterate>  
        這樣先定義,后使用,就ok了。
例二:<html:submit value="<bean:message key="welcome.login" bundle="base"/>"/>
         應該為
          <html:submit>
          <bean:message key = "welcome.logon" bundle = "base"/>
         </html:submit>

   

刚开始使用struts标签时,很痛苦,三个人窝在实验室里把struts骂了个遍,但用还是得用,而且强制用,必须学会。我因为之前用的是webwork,所以老是拿两个做对比,不过现在好了,struts2出来啦!!
      struts标签的用法网上很多,这里也就不说了,要说的是在这次运用struts标签过程中的一些问题和经验。
    1、页面action嵌套,因为是分工合作,三个人分别完成各自模块,最后进行组装。所以避免不了,一个页面会有多个action组成。那么怎么运用struts标签进行action组装呢?
<bean:include id="liststeptype" page="/step/steptype.html?event=listStepType" />
<bean:write name="liststeptype" filter="false"/>
    先利用include创建一个id为liststeptype的模块,page的值为指定action的url,再通过write将其显示出来,filter如果为ture则显示页面源码,为false显示html页面。
   
    2、Date型数据的页面显示,理想状态是显示为“YYYY-mm-DD”,如果是formbean中的属性还好办一点,直接在进行数据类型转换的时候就 把样式给format了,但是如果是对象列表呢,通过循环标签显示,没法利用struts标签调用format函数(struts标签不支持此功能),对 此想个多个方案,最高的一个是重写Date的toString方法,最简单的是利用bean:write 中的format的属性(这是郁闷了很久后无意中发现的)。
    3、formbean中不能接收Object类型的属性,这点着实郁闷了很久,所以遇到需要用到Object类型的数据时只能再手动转换。
    4、复选框的运用。struts标签中,到系统完成都没能很好运用的便是复选框,所以每次遇到需要用到复选框就直接使用jsp标签替代了,简单快速。
    5、struts标签不能嵌套。struts标签中的html标签,一般来说value值为与property同名的formbean中的属性值,当然value的值也能指定,但却不能动态获取,比如要想property1的value等于formbean中property2的值。对此讨论除了两个方案,使用jsp标签或者EL表达式(即${property2})。
   6、下拉框的运用
<html:select property="mnEquipmentId">
        <html:option value="0">------请选择------</html:option>
        <html:optionsCollection property="equipmentList" label="name" value="id"/>
          <html:options collection="equipmentList" labelProperty="name" property="id" />
</html:select>
      把结果存入一个ArrayList作为 request 的一个属性传到页面上, 这时一般用 <html:options .../> 标签;如果数据放到 formbean里,作为属性在页面上取,这时一般用 <html:optionsCollection ... />


posted on 2011-05-30 15:33 强强 阅读(645) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: