2017-05-29 17 views
0

私は春とstackoverflowで新しいです。私は次のような状況があります: コントローラークラスにマップされたインデックスページのボタンをクリックしましたが、そこに到達しましたが、コントローラーが目的のビューまたはJSPファイルにリダイレクトされていないため、スプリングMVCコントローラがいずれのビューにもリダイレクトされない

は、ここに私のコントローラクラス

import java.util.List; 
import model.Emp; 
import model.EmpDao; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class EmpController { 

@Autowired 
EmpDao dao;//will inject dao from xml file 

/*It displays a form to input data, here "command" is a reserved request 
attribute 
*which is used to display object data into form 
*/ 
@RequestMapping("/empform") 
public ModelAndView showform() { 
    return new ModelAndView("redirect:/empform", "command", new Emp()); 
} 

/*It saves object into database. The @ModelAttribute puts request data 
* into model object. You need to mention RequestMethod.POST method 
* because default request is GET*/ 
@RequestMapping(value = "/save", method = RequestMethod.POST) 
public ModelAndView save(@ModelAttribute("emp") Emp emp) { 
    dao.save(emp); 
    return new ModelAndView("redirect:/viewemp");//will redirect to viewemp request mapping 
} 

/* It provides list of employees in model object */ 
@RequestMapping("/viewemp") 
public ModelAndView viewemp() { 
    List<Emp> list = dao.getEmployees(); 

    return new ModelAndView("redirect:/viewemp", "list", list); 
} 

/* It displays object data into form for the given id. 
* The @PathVariable puts URL data into variable.*/ 
@RequestMapping(value = "/editemp/{id}") 
public ModelAndView edit(@PathVariable int id) { 
    Emp emp = dao.getEmpById(id); 
    return new ModelAndView("empeditform", "command", emp); 
} 

/* It updates model object. */ 
@RequestMapping(value = "/editsave", method = RequestMethod.POST) 
public ModelAndView editsave(@ModelAttribute("emp") Emp emp) { 
    dao.update(emp); 
    return new ModelAndView("redirect:/viewemp"); 
} 

/* It deletes record for the given id in URL and redirects to /viewemp */ 
@RequestMapping(value = "/deleteemp/{id}", method = RequestMethod.GET) 
public ModelAndView delete(@PathVariable int id) { 
    dao.delete(id); 
    return new ModelAndView("redirect:/viewemp"); 
}} 

である私は、この問題を関連する多くの質問をチェックしているが、残念ながら何も働きました。助けてください。

ディスパッチャ-servlet.xml

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMap 
ping"/> 

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
       <prop key="index.htm">indexController</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
      p:prefix="/WEB-INF/jsp/" 
      p:suffix=".jsp" /> 

    <bean name="indexController" class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
      p:viewName="index" /> 

applicationContext.xmlを

<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
    <property name="url" value="jdbc:mysql://localhost:3306/demoDB"></property> 
    <property name="username" value="root"></property> 
    <property name="password" value="password"></property> 
</bean> 

<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="ds"></property> 
</bean> 

<bean id="dao" class="model.EmpDao"> 
    <property name="template" ref="jt"></property> 
</bean> 

プロジェクトツリー:

Project Tree

+1

を与えます。 –

+0

おそらく、問題はビューリゾルバの設定にあります。 – RubioRic

+1

問題の再現性の低いサンプルを提供すると便利です。 – David

答えて

1

@Controllerviewempページにリダイレクトしようとしていると思います。それは何度も同じURLにリダイレクトされます。代わりにredirectを行うので、ちょうどマイナス投票を与える前に何かを言うView名に

/* It provides list of employees in model object */ 
@RequestMapping("/viewemp") 
public ModelAndView viewemp() { 
     List<Emp> list = dao.getEmployees(); 

     return new ModelAndView("viewemp", "list", list); 
} 
+0

これはSpring MVCが動作する方法ではありません。https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.htmlコントローラはModelAndViewをFrontController(DispatcherServlet)に渡し、ビューがレンダリングされると、リクエストコントローラに何度も戻されていません。シンプルなHelloWorldコントローラを確認できますhttps://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-controller – RubioRic

+0

Yeh!正しい#RubioRic、レンダリングビュー用にビュー名を指定する必要があります! –

+0

あなたはリダイレクトプレフィックスであなたが正しいと思います。 https://stackoverflow.com/questions/17218856/redirect-from-one-controller-method-to-another-controller-method – RubioRic

関連する問題