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

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

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

    beauty_beast

    上善若水 厚德載物

    這兩天在學習SpringMVC遇到兩個比較郁悶的問題,估計新學者很容易遇到,和大家分享一下,避免出現類似的問題。
    1、 No request handling method with name 'insert' in class? "ClassName",頁面顯示為404錯誤
    這個問題出現在使用多操作控制器情況下,相關的操作方法中對應的方法參數前兩位必須是request,response對象,必須要有,否則會報如上異常。
    2、這個問題困惑了我半天,在網上也有類似的問題,但沒有正確解決方法,異常如下:
    javax.servlet.ServletException: ModelAndView [ModelAndView: materialized View is [null]
    這個問題可能出現的場景很多,我所描述的只是其中之一,沒有相關解決方法,只有查看相關源代碼,開源就是有這個好處。
    異常拋出代碼為:
    ??????? at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:924)
    查看了相關源代碼,一層一層看下去
    首先在ModelAndView 類實例是在DispatcherServlet類中的doDispatch方法中創建的,
    再跟蹤doDispatch方法中相關代碼行

    HandlerAdapter?ha? = ?getHandlerAdapter(mappedHandler.getHandler());
    mv?
    = ?ha.handle(processedRequest,?response,?mappedHandler.getHandler());

    ha是一個接口實現類,在該場景下,對應的接口實現類為:
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

    SimpleControllerHandlerAdapter類中對應的實現代碼為:

    ((Controller)?handler).handleRequest(request,?response)

    調用的是對應的Controller接口中方法,當前Controller對應的接口實現類為我們配置的自定義控制類,一般繼承于org.springframework.web.servlet.mvc.SimpleFormController;一層一層再跟蹤發現:
    SimpleFormController繼層于同包AbstractFormController類,而
    AbstractFormController繼承于同包AbstractController類,對應的
    handleRequest(request,response)在AbstractController類中實現,最終調用代碼如下:

    return ?handleRequestInternal(request,?response)

    handleRequest方法為一個抽象方法,在AbstractFormController類中實現,終于找到原因了,呵呵

    protected ? final ?ModelAndView?handleRequestInternal(HttpServletRequest?request,?HttpServletResponse?response)
    ????????????
    throws ?Exception? {

    ????????
    // ?Form?submission?or?new?form?to?show?
    ???????? if ?(isFormSubmission(request))? {

    ????????????
    // ?Form?submission:?in?session-form?mode,?we?need?to?find
    ????????????
    // ?the?form?object?in?the?HTTP?session.
    ???????????? if ?(isSessionForm())? {
    ????????????????HttpSession?session?
    = ?request.getSession( false );
    ????????????????
    if ?(session? == ? null ? || ?session.getAttribute(getFormSessionAttributeName(request))? == ? null )? {
    ????????????????????
    // ?Cannot?submit?a?session?form?if?no?form?object?is?in?the?session.
    ???????????????????? return ?handleInvalidSubmit(request,?response);
    ????????????????}

    ????????????}


    ????????????
    // ?Found?form?object?in?HTTP?session:?fetch?form?object,
    ????????????
    // ?bind,?validate,?process?submission.
    ????????????Object?command? = ?getCommand(request);
    ????????????ServletRequestDataBinder?binder?
    = ?bindAndValidate(request,?command);
    ????????????
    return ?processFormSubmission(request,?response,?command,?binder.getErrors());
    ????????}


    ????????
    else ? {
    ????????????
    // ?New?form?to?show:?render?form?view.
    ???????????? return ?showNewForm(request,?response);
    ????????}

    ????}

    原因實際很簡單,就因為我在要提交的表單中沒有采用post方法,呵呵
    而isFormSubmission(request)就是根據此項判斷,所以其實際執行的代碼為:
    return showNewForm(request, response);
    而我在對應的配置屬性中沒有配置對應屬性 formView值,因為我本來就不是要展現一個新表單。
    故最后返回的ModelAndView為空。

    問題都解決了,只是沒想到對提交表單這么嚴格,其他web框架是沒有這種限制,不過也沒多大關系,在實際開發中我們大都是采用post方式提交表單的。

    Feedback

    # re: Spring框架學習二篇外----在WEBMVC學習遇到的問題  回復  更多評論   

    2006-05-26 14:25 by null
    為啥“沒有配置對應屬性 formView值”呢?當你新建一個東西時,不需要“展現一個新表單”嗎?
    一個SimpleFormController可以處理一種表單的新建、編輯、修改,并且提供數據驗證和綁定的功能,我覺得這是SpringMVC最獨到的地方了;處理表單以外的其他GET請求時,我都用MultiActionController。

    # re: Spring框架學習二篇外----在WEBMVC學習遇到的問題  回復  更多評論   

    2006-05-26 15:17 by 柳隨風
    呵呵,我明白你的意思,我做的測試頁面是提交數據的頁面,不是展現一個新表單,我實際上只是想測試數據綁定功能。
    謝謝你的指導.

    # re: Spring框架學習二篇外----在WEBMVC學習遇到的問題  回復  更多評論   

    2006-05-26 20:07 by 潛心
    當然了
    spring對表單提交的方法是非常嚴格的,
    建議把spring的API仔細研究下,里面講的很清楚
    主站蜘蛛池模板: 立即播放免费毛片一级| 亚洲男女一区二区三区| 免费看黄网站在线看| 免费黄色网址入口| 色天使亚洲综合在线观看| 成人网站免费观看| 亚洲精品国产摄像头| 免费人成在线观看网站品爱网日本| 亚洲精品又粗又大又爽A片| 国产精品免费看久久久久| 男男gvh肉在线观看免费| 免费人成在线观看播放国产| 一本一道dvd在线观看免费视频| 亚洲成av人在片观看| 国产免费人成视频尤勿视频| 国产亚洲无线码一区二区| 久久青青草原国产精品免费| 亚洲精品美女在线观看| 成人午夜视频免费| 国产精品久久久久久亚洲小说| 亚洲成a人一区二区三区| 免费黄色电影在线观看| 久久精品国产亚洲AV无码麻豆 | 亚洲人成无码网站| 最近免费中文在线视频| 在线观看日本亚洲一区| 国产午夜影视大全免费观看 | 久久精品国产亚洲一区二区| 久久精品电影免费动漫| 亚洲成a人片在线网站| 永久免费视频v片www| 三级黄色免费观看| 亚洲一区二区三区免费视频| 免费在线黄色网址| 中文字幕无码毛片免费看| 亚洲小说区图片区| 亚洲国产综合无码一区二区二三区 | 国产白丝无码免费视频| 亚洲综合精品第一页| 亚洲人成无码www久久久| 免费A级毛片无码A∨中文字幕下载|