<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文件的內(nèi)容時,我們遇到了麻煩,本文中作者給出了一種簡單的方式來解決這個問題。

    [關(guān)鍵詞] Struts Tiles

    1  問題描述

    我們在Web應(yīng)用中使用Struts Tiles時,如果被組裝的內(nèi)容是.do的內(nèi)容,比如下面的例子,將會出現(xiàn)錯誤信息。

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

    錯誤信息:ServletException in '/companyView.do?action=before_new': 應(yīng)答已經(jīng)提交。

    2  問題原因分析

    tiles 使用了 JSP 的 jsp:include 技術(shù)實現(xiàn)頁面組裝,只能適用于 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 文件的內(nèi)容用于顯示

    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 周銳 閱讀(877) 評論(3)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 老司机在线免费视频| a在线视频免费观看| 三年片在线观看免费观看高清电影 | 亚洲成av人片天堂网无码】| 无码精品A∨在线观看免费| 亚洲黄色三级视频| 亚洲毛片免费视频| 亚洲免费网站在线观看| A在线观看免费网站大全| 色在线亚洲视频www| 成年人在线免费观看| 亚洲av无码专区国产不乱码| 国产男女猛烈无遮挡免费视频| 无码一区二区三区亚洲人妻| 亚洲成A∨人片天堂网无码| www.av在线免费观看| 国产精品亚洲а∨无码播放| 久久99热精品免费观看动漫| 久久久久亚洲精品无码蜜桃 | 成人黄网站片免费视频| 亚洲AV无码成人精品区天堂| 久久久久久曰本AV免费免费| 精品亚洲成A人无码成A在线观看| 好男人视频在线观看免费看片| 国产成人亚洲午夜电影| 亚洲欭美日韩颜射在线二| 日韩免费无码一区二区三区| 国产成人精品日本亚洲专| 亚洲A∨精品一区二区三区| 黄色网站软件app在线观看免费| 亚洲综合网美国十次| 日本xxwwxxww在线视频免费| 国产精品免费视频观看拍拍| 久久精品亚洲精品国产色婷 | 成人黄软件网18免费下载成人黄18免费视频 | 亚洲人成在线影院| 曰皮全部过程视频免费国产30分钟| rh男男车车的车车免费网站| 亚洲精品一卡2卡3卡三卡四卡| 国产成人青青热久免费精品| 久久免费观看国产精品|