我有這個程序,我正在寫,我試圖讓用戶登錄後顯示第二頁。我的第一個屏幕處理通過LoginInterfaceController,如下所示。@RequestMapping在春天無法獲得第二控制器接管
@Controller
public class LoginInterfaceController{
protected final Log logger = LogFactory.getLog(getClass());
@RequestMapping
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ModelMap model = new ModelMap();
logger.info("Returning Login View");
model.addAttribute(getLoginAttempt());
return new ModelAndView("LoginView.jsp", model);
}
@ModelAttribute("LoginAttempt")
public LoginAttempt getLoginAttempt() {
return new LoginAttempt();
}
@RequestMapping(method=RequestMethod.POST)
public String validateLogin(@ModelAttribute("LoginAttempt") @Valid LoginAttempt loginDetails,
BindingResult bindingResult, Model model,
@RequestParam(value="username", required=true) String username,
@RequestParam (value="password", required=true) String password)
{
String returnString;
LoginAttempt checkLogin = new LoginAttempt(username, password);
if(bindingResult.hasErrors())
{
returnString = "LoginView.jsp";
}
else if((!checkLogin.getUsername().equalsIgnoreCase("james") || !checkLogin.getPassword().equals("asdf123")))
{
returnString = "FailedLogin.jsp";
}
else
{
returnString = "redirect:" + "/ReferrerHome/";
}
return returnString;
}
一旦用戶被驗證,它應該將它們重定向到/ ReferrerHome /頁面。
我LeadInterfaceController具有設置其請求的映射如下
@Controller
public class LeadInterfaceController {
private LeadServiceClass leadService = new LeadServiceClass();
protected final Log4JLogger logger = new Log4JLogger();
@RequestMapping(value="/ReferrerHome/")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ModelMap model = new ModelMap();
logger.info("Returning Referrer Home View");
model.addAttribute(getLead());
model.addAttribute(getBrokerList());
return new ModelAndView("home.jsp", model);
}
@ModelAttribute("Lead")
private Lead getLead() {
return leadService.getNewLead();
}
@ModelAttribute("Broker")
private ArrayList<Broker> getBrokerList(/*Referrer referrer*/)
{
return /*(ArrayList<Broker>)referrer.getBrokers() */ new ArrayList<Broker>();
}
@RequestMapping(value="ReferrerHome/home.jsp", method=RequestMethod.POST)
public String validateLogin(@ModelAttribute("Lead") @Valid Lead leadInput, BindingResult bindingResult, Model model)
{
String returnString;
if(leadInput.getLeadHomePhoneNumber() == null &&
leadInput.getLeadWorkPhoneNumber() == null &&
leadInput.getLeadMobilePhoneNumber() == null &&
leadInput.getLeadEmail() == null){
logger.info("HPhoneNum: " + leadInput.getLeadHomePhoneNumber());
//code here to set an error state indicating that some contact information is required
}
if(bindingResult.hasErrors())
{
returnString = "ReferrerHome/home.jsp";
}
else
{
leadService.getLeadDao().addLead(leadInput);
returnString = "ReferrerHome/success.jsp";
}
return returnString;
}
然而,當用戶被認證,則URL交換機/ ReferrerHome /但是LoginView.jsp被重新裝載,而不是被加載回到Home.jsp。 令人氣憤的是,這是2天前的工作,我不能想我做了什麼導致它破裂。
我這裏有
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven />
<tx:annotation-driven/>
<jdbc:embedded-database id="LTSDatabase" type="HSQL" />
<context:component-scan base-package="com.au.curtin" />
<import resource="*/WEB-INF/classes/com/au/curtin/leadtrackingsystem.xml" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="LTSDatabase" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<bean id="PersistenceAnnotationPostProcessor"
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="hibernateExceptionTranslator"
class="org.springframework.orm.hibernate4.HibernateExceptionTranslator" />
<bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"
id="PersistenceExceptionTranslator" depends-on="hibernateExceptionTranslator" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value="" />
</bean>
我LTSServlet.xml,在這裏我的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>LTSServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LTSServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>LoginView.htm</welcome-file>
</welcome-file-list>
</web-app>
我撕裂我的頭髮試圖讓這個工作。
希望你能幫上忙。
我試過你的建議。我的問題是,如果我在LoginInterfaceController中放入@RequestMapping(value =「/」),當我啓動我的程序時(我正在使用Tomcat,因此調試失敗),我得到了404 Not Found。另外,LeadInterfaceController永遠不會運行。它沒有出現在我的日誌中。我的LoginInterfaceController在我的應用程序的根目錄下運行 – JamesENL 2013-05-07 11:34:01
您可以使用Eclipse輕鬆地使用tomcat進行調試,只需在調試模式下啓動tomcat即可。順便說一句。您是否嘗試將返回值更改爲「ReferrerHome/home.jsp」而不是「home.jsp」? – 2013-05-07 11:40:59
是的,它不起作用,因爲LeadInterfaceController實際上並沒有被調用。我現在最大的問題是我404' – JamesENL 2013-05-07 11:45:18