<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 73,  comments - 55,  trackbacks - 0

    一、使用struts表單驗證而不用struts標簽的方法:
    使用struts標簽時:
    <html:javascript formName="loginForm" dynamicJavascript="true" staticJavascript="false" />

    <html:form action="login" onsubmit="return validateLoginForm(this);">
    ?<input type="text" name="account.accountId"/>
    ?<input type="password" name="account.password"/>
    ?<INPUT type="submit" value="提交">
    ?<input type="reset" value="清空">
    </html:form>

    改成html標簽后:
    <html:javascript formName="loginForm" dynamicJavascript="true" staticJavascript="false" />

    <form action="login.do" name="loginForm"?onsubmit="return validateLoginForm(this);">
    <input type="text" name="account.accountId" size="16" style="width:120;height:23"/>
    <input type="password" name="account.password" size="16" style="width:120;height:23" />
    <INPUT type="submit" value="提交">
    <input type="reset" value="清空">
    </form>

    二、動態表單知識
    ? <form-bean>的<form-property>子元素用來設置動態ActionForm的屬性。<form-property>元素的name屬性指定屬性名,type指定屬性類型,可以把動態ActionForm的屬性設為以下Java類型:

    · java.lang.BigDecimal

    · java.lang.BigInteger

    · java.lang.Boolean

    · java.lang.Byte

    · java.lang.Character

    · java.lang.Class

    · java.lang.Double

    · java.lang.Float

    · java.lang.Integer

    · java.lang.Long

    · java.lang.Short

    · java.lang.String

    · java.sql.Data

    · java.sql.Time

    · java.sql.Timestamp

    ??????如果表單的字段值為Java基本類型,在配置時應該用響應的包裝類型來代替,例如int類型的包裝類型為Integer。如果屬性為Java基本類型,應該把屬性設置為相應的Java包裝類型。
    ??????DynaActionForm基類提供了initialize()方法,它把表單的所有屬性恢復為默認值。表單屬性默認值由<form-bean>的<form-property>子元素的initial屬性來決定。如果沒有設置initial屬性,則表單屬性的默認值由其Java類型來自動決定,例如對象類型的默認值為null,整數類型的默認值為0,boolean類型的默認值為false,date類型的默認值為當天。

    三、用到spring框架后action都是繼承org.springframework.web.struts.DispatchActionSupport,DispatchActionSupport類里有
    1)Log log,所以在action中可直接寫:log.info("Get a Bean named:Object");
    2)protected void onInit(){};//創建action對象時先執行此方法。
    3)protected void onDestroy(){};//回收action對象時先執行此方法

    四、Tiles框架用法見《精通struts》第十六章。
    詳細步驟:P397
    當編譯Index.jsp時如果錯誤信息為: javax.servlet.jsp.JspException: ServletException in '/Layout.jsp': ServletException in

    'common/CatalogsBar.jsp': null
    其中Layout.jsp為模板,common/CatalogsBar.jsp為Index.jsp其中一部分,這個信息表名不是'common/CatalogsBar.jsp'找不到,而是它內部

    有空引用異常,單獨編譯該文件得到具體錯誤信息:
    java.lang.NullPointerException at _common._CatalogsBar_2e_jsp._jspService(CatalogsBar.jsp:11) [/common/CatalogsBar.jsp] 表名

    在第11行有空引用。

    五、國際化
    1.開發和編譯代碼時指定字符集為UTF-8。JBuilder和Eclipse都可以在項目屬性中設置。
    2.使用過濾器,如果所有請求都經過一個Servlet控制分配器,那么使用Servlet的filter執行語句,將所有來自瀏覽器的請求(request)轉換為UTF-8,因為瀏覽器發過來的請求包根據瀏覽器所在的操作系統編碼,可能是各種形式編碼。關鍵一句:
    request.setCharacterEncoding("UTF-8")。
    3.在JSP頭部聲明:<%@ page contentType="text/html;charset= UTF-8" %>。
    在Jsp的html代碼中,聲明UTF-8:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    4.設定數據庫連接方式是UTF-8。例如連接MYSQL時配置URL如下:
    jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
    注意,上述寫法是JBoss的mysql-ds.xml寫法,多虧網友提示,在tomcat中&amp;要寫成&即可。一般其他數據庫都可以通過管理設置設定UTF-8
    其他和外界交互時能夠設定編碼時就設定UTF-8,例如讀取文件,操作XML等。
    ?
    六、表單驗證:
    1、驗證的配置是在validation.xml中,驗證規則的配置是在validator-rules.xml與validator-rules-user.xml中.

    七、action中轉url的方式:
    1。轉到.jsp頁面:
    return mapping.findForward("***");//***指struts-config中定義好的forward項。
    forward項有兩個選項,默認都為false,說明如下:
    contextRelative——是否是相對目錄。(如現頁面為business/input.jsp,轉到action后forward項到business/result.jsp,如果contextRelative為false,則轉到鏈接business/business/result.jsp,所以此選項最好勾上)
    redirect——是否重定向,即是否包含request信息。
    2。返回上頁顯示出錯信息:
    this.saveErrors(request,errors);
    return this.***(mapping,form,request,response);//***指本action的一個方法,為了轉到上個頁面顯示出錯信息
    3。轉到本action的其他方法:
    ActionForward forward = new ActionForward();
    forward.setPath(mapping.getPath() + ".do?method=****&***);
    forward.setRedirect(true););//用此方法則間接跳轉,即不帶request信息,不加此
    //方法會保留request信息
    return forward;


    八、處理日期類型
    struts使用日期包括將string自動轉化為日期fill到form中,以及將form中的日期按照指定格式顯示在html的textfield中。首先講第一種情況的解決方法:

    創建如下類:

    import?java.util.*;
    import?org.apache.commons.beanutils.*;
    import?java.text.SimpleDateFormat;

    public?class?DateConvert?implements?Converter
    {
    ??static?SimpleDateFormat?df?=?new?SimpleDateFormat("yyyy/MM/dd");
    ??public?DateConvert()
    ??{

    ??}
    ??public?Object?convert(Class?type,?Object?value)
    ??{
    ????
    ????if(value==null)return?null;
    ????if(((String)value).trim().length()==0)?return?null;

    ????if(value?instanceof?String)
    ????{
    ??????try
    ??????{
    ????????return?df.parse((String)value);
    ??????}
    ??????catch?(Exception?ex)
    ??????{
    ????????throw?new?ConversionException("輸入的日期類型不合乎yyyy/MM/dd"
    ??????????+?value.getClass());
    ??????}

    ????}
    ????else
    ????{
    ??????throw?new?ConversionException("輸入的不是字符類型"+value.getClass());
    ????}

    ??}
    }

    然后在你的系統某出使用如下(如web的init方法)
    ConvertUtils.register(new?DateConvert(),java.util.Date.class);
    參數用于表示DateConvert類負責處理java.util.Date類型的轉化

    第二種情況是如何顯示form中日期類型到html:text中,我用的辦法是修改struts的代碼,重新生成一個新的struts.jar
    org.apache.struts.taglib.html.BaseFieldTag的doStartTag的方法
    找到?if?(value?!=?null)?{results.append(ResponseUtils.filter(value))代碼行下面的內容,需要修改此處代碼,以便輸出日期類型
    如下:
    if?(value?!=?null)?{
    ????????????results.append(ResponseUtils.filter(value));
    ????????}?else?if?(redisplay?||?!"password".equals(type))?{
    ????????????Object?value?=?RequestUtils.lookup(pageContext,?name,?property,?null);
    ????????????//System.out.println("lijz?"+value);

    ????????????if(value?instanceof?java.util.Date)
    ????????????{
    ???????????????//System.out.println("date="+value);

    ???????????????if?(value?==?null)
    ???????????????????value?=?"";
    ????????else
    ????????{
    ??????????java.util.Date?d=?(java.util.Date)value;
    ??????????try
    ???????????{

    ????????????results.append(ResponseUtils.filter(df.format(d)));
    ??????????}
    ??????????catch(Exception?ex)
    ??????????{
    ????????????System.out.println("form?error:"+ex.getMessage());
    ??????????}
    ??????????}
    ????????????}
    ???????????else
    ???????????{
    ???????????????if?(value?==?null)
    ????????????????value?=?"";
    ????????????????results.append(ResponseUtils.filter(value.toString()));
    ???????????}
    ???????????
    ???????}
    ????????results.append("\"");
    ????????results.append(prepareEventHandlers());
    ????????results.append(prepareStyles());
    ????????results.append(getElementClose());

    ????????//?Print?this?field?to?our?output?writer

    ????????ResponseUtils.write(pageContext,?results.toString());

    ????????//?Continue?processing?this?page

    ????????return?(EVAL_BODY_TAG);??????
    ?
    ?重新編譯struts成struts.jar.放到你需要的項目中

    posted on 2006-07-07 11:00 保爾任 閱讀(757) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产另类久久久精品小说| 在线a级毛片免费视频| 免费观看国产精品| 国产AV无码专区亚洲AV蜜芽 | 国产成人精品久久免费动漫| 亚洲AV人无码激艳猛片| 久久永久免费人妻精品| 久久亚洲美女精品国产精品| 1000部拍拍拍18勿入免费视频下载| 久久精品亚洲精品国产色婷 | 亚洲精品老司机在线观看| 国产成人无码区免费网站| 日本XXX黄区免费看| 2019亚洲午夜无码天堂| 皇色在线视频免费网站| 中文字幕亚洲码在线| 亚洲国产成人VA在线观看| 精品国产免费一区二区三区| 亚洲人成在线影院| 人成电影网在线观看免费| 伊人久久综在合线亚洲91| 99免费在线观看视频| 亚洲国产日韩视频观看| 吃奶摸下高潮60分钟免费视频 | 国产午夜亚洲精品不卡电影| 亚洲精品97久久中文字幕无码| 91在线免费观看| 亚洲av片不卡无码久久| 免费A级毛片在线播放不收费| 成人精品一区二区三区不卡免费看| 亚洲成人免费电影| 免费在线观看视频a| 亚在线观看免费视频入口| 亚洲综合精品第一页| 中文字幕亚洲电影| 999久久久免费精品国产| 日韩毛片在线免费观看| 中文字幕亚洲色图| 亚洲国产精品13p| 国产电影午夜成年免费视频| 日日摸夜夜添夜夜免费视频|