<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表單驗(yàn)證而不用struts標(biāo)簽的方法:
    使用struts標(biāo)簽時(shí):
    <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標(biāo)簽后:
    <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>

    二、動態(tài)表單知識
    ? <form-bean>的<form-property>子元素用來設(shè)置動態(tài)ActionForm的屬性。<form-property>元素的name屬性指定屬性名,type指定屬性類型,可以把動態(tài)ActionForm的屬性設(shè)為以下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基本類型,在配置時(shí)應(yīng)該用響應(yīng)的包裝類型來代替,例如int類型的包裝類型為Integer。如果屬性為Java基本類型,應(yīng)該把屬性設(shè)置為相應(yīng)的Java包裝類型。
    ??????DynaActionForm基類提供了initialize()方法,它把表單的所有屬性恢復(fù)為默認(rèn)值。表單屬性默認(rèn)值由<form-bean>的<form-property>子元素的initial屬性來決定。如果沒有設(shè)置initial屬性,則表單屬性的默認(rèn)值由其Java類型來自動決定,例如對象類型的默認(rèn)值為null,整數(shù)類型的默認(rèn)值為0,boolean類型的默認(rèn)值為false,date類型的默認(rèn)值為當(dāng)天。

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

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

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

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

    在第11行有空引用。

    五、國際化
    1.開發(fā)和編譯代碼時(shí)指定字符集為UTF-8。JBuilder和Eclipse都可以在項(xiàng)目屬性中設(shè)置。
    2.使用過濾器,如果所有請求都經(jīng)過一個(gè)Servlet控制分配器,那么使用Servlet的filter執(zhí)行語句,將所有來自瀏覽器的請求(request)轉(zhuǎn)換為UTF-8,因?yàn)闉g覽器發(fā)過來的請求包根據(jù)瀏覽器所在的操作系統(tǒng)編碼,可能是各種形式編碼。關(guān)鍵一句:
    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.設(shè)定數(shù)據(jù)庫連接方式是UTF-8。例如連接MYSQL時(shí)配置URL如下:
    jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
    注意,上述寫法是JBoss的mysql-ds.xml寫法,多虧網(wǎng)友提示,在tomcat中&amp;要寫成&即可。一般其他數(shù)據(jù)庫都可以通過管理設(shè)置設(shè)定UTF-8
    其他和外界交互時(shí)能夠設(shè)定編碼時(shí)就設(shè)定UTF-8,例如讀取文件,操作XML等。
    ?
    六、表單驗(yàn)證:
    1、驗(yàn)證的配置是在validation.xml中,驗(yàn)證規(guī)則的配置是在validator-rules.xml與validator-rules-user.xml中.

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


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

    創(chuàng)建如下類:

    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());
    ????}

    ??}
    }

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

    第二種情況是如何顯示form中日期類型到html:text中,我用的辦法是修改struts的代碼,重新生成一個(gè)新的struts.jar
    org.apache.struts.taglib.html.BaseFieldTag的doStartTag的方法
    找到?if?(value?!=?null)?{results.append(ResponseUtils.filter(value))代碼行下面的內(nèi)容,需要修改此處代碼,以便輸出日期類型
    如下:
    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.放到你需要的項(xiàng)目中

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

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


    網(wǎng)站導(dǎo)航:
     

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

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久久久亚洲Av无码| 免费观看四虎精品国产永久| 黑人精品videos亚洲人| 国产精品一区二区三区免费| www.91亚洲| 一级视频免费观看| 亚洲熟妇无码乱子AV电影| 精品一区二区三区免费视频| 久久亚洲国产欧洲精品一| 91精品国产免费网站| 亚洲国产成人九九综合| 久久WWW免费人成人片| 亚洲乱码日产精品一二三| 四虎影视永久免费观看网址| 一级毛片a免费播放王色电影| 亚洲无线观看国产精品| 午夜精品射精入后重之免费观看 | 亚洲美国产亚洲AV| 亚洲 综合 国产 欧洲 丝袜| 在线免费视频你懂的| 久久亚洲国产伦理| 中国在线观看免费国语版| 99亚洲乱人伦aⅴ精品| 亚洲区小说区激情区图片区| 免费国产黄网站在线观看可以下载| 亚洲日本在线免费观看| 日韩一区二区三区免费体验| caoporm超免费公开视频| 91大神亚洲影视在线| 日韩成人在线免费视频| 一级特黄录像免费播放肥| 亚洲成人福利在线观看| 国产三级电影免费观看| 久久午夜伦鲁片免费无码| 亚洲人成人无码.www石榴| 亚洲精品中文字幕无码蜜桃| 亚洲精品动漫免费二区| 久久久久女教师免费一区| 亚洲jizzjizz在线播放久| 亚洲中文字幕无码爆乳AV| 99久久综合国产精品免费|