2013-04-01 41 views
1

Logon.jsp不能夠呈現來自控制器使用angularjs +彈簧MVC 3.0

<!DOCTYPE html> 
    <html ng-app="angularspring"> 
    <head> 

    </head> 

    <body ng-controller="LogonController"> 

    <form> 
      <div> 
       TextBox : <input type="text" ng-model="person.userName" /> 
      </div> 
      <div> 
       Password : <input type="password" ng-model="person.passWord" /> 
      </div> 
      <div ng-view></div> 
      <button type="submit" ng-click="login(person)"> Submit 

      </button> 
    </form> 

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
    <script type="text/javascript" src="js/jquery.i18n.properties-min-1.0.9.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js"></script> 
    <script type="text/javascript" src="js/init.js"></script> 
    <script type="text/javascript" src="js/controller.js"></script> 
    <script type="text/javascript" src="js/i18n.js"></script> 
    <script type="text/javascript" src="js/base64.js"></script> 
    <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script> 


    </body> 


    </html> 

controller.js

 var as = angular.module('angularspring',[]); 


     as.controller('LogonController', function ($scope, $http) { 
      var actionUrl = 'action/checkUserNameAndPassword/'; 


      $scope.login = function (person) { 

       $http.post(actionUrl,$scope.person); 
      }; 


     });  

的web.xml

<context-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
       /WEB-INF/action-servlet.xml 
      </param-value> 
     </context-param> 

     <listener> 
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
     </listener> 

     <!-- Spring MVC --> 
     <servlet> 
      <servlet-name>action</servlet-name> 
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
      <servlet-name>action</servlet-name> 
      <url-pattern>/action/*</url-pattern> 
     </servlet-mapping> 


     <welcome-file-list> 
     <welcome-file>logon.html</welcome-file> 
     </welcome-file-list> 

到另一個HTML請求在action-servlet.xml文件中包含以下標籤和類

action-servlet.xml文件

<mvc:annotation-driven/>  

    <context:annotation-config /> 

    <context:component-scan base-package="com.pack" /> 

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean> 


    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" > 
     <property name="prefix" value="" /> 
     <property name="suffix" value=".html" /> 

    </bean> 

LogonController.java

在LogonController我能夠獲得可以結合到人對象的請求值,但我不能夠呈現請求logonSuccess.html

@RequestMapping(value = "/checkUserNameAndPassword", method = RequestMethod.POST) 
    @ResponseBody 
    public ModelAndView logon(@RequestBody Person person) { 

      return new ModelAndView("WEB-INF/views/logonSuccess"); 
     } 

回答

0

根據我的理解,您可以綁定modelattribute,但無法分派到所需的視圖。

這是我觀察

你有你的logon方法@ResponseBody註解,但是它返回一個ModelandView對象。

如果要返回到html視圖,請刪除@ResponseBody註釋。

你可以閱讀更多關於這個here

另外在action-servlet.xml與您的HTML文件,我認爲的位置指定viewResolverprefix屬性是WEB-INF/views

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/views/</value> 
    </property> 
    <property name="suffix"> 
     <value>.html</value> 
    </property> 
</bean> 

現在你可以返回ModelandView like

return new ModelAndView("logonSuccess"); 
+0

我按照你所說的去除了@ResponseBody,並修改了action-servlet.xml文件中的更改。但我面臨同樣的問題。 – user2231545

+0

你可以發佈錯誤嗎? – Usha

+0

我在Spring MVC中使用了angularJs。沒有錯誤顯示。 – user2231545

0

我遇到了s問題。在登錄頁面上,我試圖在成功登錄時重定向到主頁。我使用角度js和彈簧mvc休息控制器。我正在做一個來自angularjs的http.post,而我的restolelr正在進行身份驗證並返回模型和視圖對象。但是然後angularjs沒有將我重定向到主頁。

然後我改變了我的angularjs實現,它工作。嘗試做一個表單從angularjs提交給控制器,而不是http.post或http.get。現在,頁面被重定向到主頁或錯誤頁面,無論在REST控制器的ModelAndView對象中設置了哪個視圖。