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

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

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

    posts - 431,  comments - 344,  trackbacks - 0
    肖菁
    軟件工程師

    [文章摘要] Struts tiles中提供了基于模版的頁面組裝框架,然而模版中需要包含.do文件的內容時,我們遇到了麻煩,本文中作者給出了一種簡單的方式來解決這個問題。

    [關鍵詞] Struts Tiles

    1  問題描述

    我們在Web應用中使用Struts Tiles時,如果被組裝的內容是.do的內容,比如下面的例子,將會出現錯誤信息。

    實際例子:<insert:put attribute=" /companyView.do?action=before_new">

    錯誤信息:ServletException in '/companyView.do?action=before_new': 應答已經提交。

    2  問題原因分析

    tiles 使用了 JSP 的 jsp:include 技術實現頁面組裝,只能適用于 jsp 頁面,無法用于 .do 這樣的情況。

    找到出錯的地方:

    TilesUtilImpl.java 的 doInclude(String uri, PageContext pageContext)

    2.1  doInclude 方法源代碼

    public void doInclude(String uri, PageContext pageContext)

    throws IOException, ServletException {

    pageContext.include(uri);

    }

    3  問題解決

    3.1  修改 doInclude 方法

    public void doInclude(String uri, PageContext pageContext)

    throws IOException, ServletException {

    if (uri.indexOf(".jsp") > 0)

    pageContext.include(uri);

    else if (uri.indexOf(".do") > 0)

    pageContext.getOut().write(getPageContent(uri, pageContext));

    }

    3.2 給 TilesUtilImpl 增加一個新的方法getPageContent,獲取 .do 文件的內容用于顯示

    private String getPageContent(String uri, PageContext pageContext) {

    String result = "";

    HttpServletRequest request = (HttpServletRequest) pageContext .getRequest();

    String contextPath = request.getContextPath();

    String serverIP = request.getServerName();

    String serverPort = String.valueOf(request.getServerPort());

    String uriTmp = "http://";

    if (serverPort.equals("80"))

    uriTmp = uriTmp + serverIP;

    else

    uriTmp = uriTmp + serverIP + ":" + serverPort;

    uriTmp = uriTmp + contextPath;

    if (uri.startsWith("/"))

    uriTmp += uri;

    else

    uriTmp += "/" + uri;

    try {

    URL url = new URL(uriTmp);

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    BufferedReader reader = new BufferedReader(new InputStreamReader(

    conn.getInputStream()));

    String line = null;

    while ((line = reader.readLine()) != null) {

    result += line;

    }

    conn.disconnect();

    reader.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    return result;

    }
    posted on 2007-01-26 15:04 周銳 閱讀(867) 評論(3)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 亚洲日产2021三区在线| 亚洲狠狠综合久久| 亚洲av成人一区二区三区在线播放 | 一级做性色a爰片久久毛片免费| 日本牲交大片免费观看| 国产精品亚洲一区二区在线观看| 午夜男人一级毛片免费 | 久久精品国产亚洲AV香蕉| 久久国产乱子伦精品免费不卡| 国产亚洲av片在线观看16女人 | 最近最好的中文字幕2019免费| 亚洲乱码一区av春药高潮| 免费无码精品黄AV电影| 亚洲精品无码久久久久秋霞| 日韩成人免费aa在线看| 特黄特色大片免费| 亚洲人成亚洲人成在线观看| 桃子视频在线观看高清免费视频| 亚洲精品在线播放视频| 国产精品无码免费播放| 日韩在线视频免费| 亚洲产国偷V产偷V自拍色戒| 最近免费中文字幕mv电影| 亚洲精品中文字幕| 亚洲视频人成在线播放| 99久热只有精品视频免费观看17| 亚洲毛片基地4455ww| 亚洲人AV永久一区二区三区久久| 免费无码又爽又刺激高潮软件| 亚洲美女视频一区| 国产免费一区二区三区VR| 天黑黑影院在线观看视频高清免费| 亚洲欧洲第一a在线观看| 成人免费视频88| 久久久WWW免费人成精品| 亚洲精品国产免费| 亚洲国产成人久久综合碰| 1000部无遮挡拍拍拍免费视频观看| 亚洲精品天堂成人片AV在线播放 | 在线观看免费污视频| 九九热久久免费视频|