2015-08-24 1 views
0

У меня есть пара выпадающих списков на моей странице jsp. Как только пользователь выберет значение из раскрывающегося списка и нажмет на Go, тот же jsp должен быть перезагружен другой таблицей ниже (вместе с деталями на основе выбранных опций из раскрывающихся списков). Мой JSP, как показано ниже:Spring mvc Form Submit - загрузить один и тот же jsp с новыми дополнительными атрибутами (примечания Spring MVC)

<form:form method="post" modelAttribute="clientForm" commandName = "clientForm" action="/editFeeMaintenance"> 

    <table> 
     <tbody> 
      <tr> 
       <td><strong><bean:message key="Select Client" /> </strong></td> 
       <td width="8%" height="6">&#160;</td> 
       <td align="left"><form:select path="client"> 
         <form:option value="0">------Select Client ------ </form:option> 
         <form:options items="${clientsList}"> 
         </form:options> 
        </form:select></td> 
        <td><form:errors path="client" cssStyle="color: #ff0000;" /></td> 
      </tr><br> 

      <tr> 
       <td> 
       &#160;<input type="submit" value="Search" onclick="getClient()"> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</form:form> 

<script language = "JavaScript"> 
    function getClient() 
{ 

    var clientObj = document.getElementById("client"); 

    console.log("client value : "+clientObj); 
    clientObj.actionType.value = submitType; 

    return false; 
    //formObj.submit(); 
} 
</script> 

А вот мой контроллер:

@Controller 
public class MyController { 

@Autowired 
private MyService myService; 

@RequestMapping(value="/addFeeMaintainance.do",method =  RequestMethod.GET) 
protected ModelAndView populateValues(HttpServletRequest request, HttpServletResponse response) throws Exception { 

MyForm = new MyForm(); 

MyForm.setClientList(MyService.getClientList(); 

ModelAndView model = new ModelAndView("feeMaintenance"); 
model.addObject("clientForm",MyForm); 
model.addObject("clientsList",Myform.getClientList()); 

return model; 
} 

    @RequestMapping(value="/editFeeMaintainance",method = RequestMethod.POST) 
    protected ModelAndView selectValues(@RequestParam String client, 
    @ModelAttribute("clientForm") MyForm paswForm) throws Exception { 

System.out.println("Account selected : "+paswForm.getClient()); 

ModelAndView model = new ModelAndView("feeMaintenance"); 
model.addObject("clientForm",MyForm); 
return model; 
} 
} 

Я не могу обновить форму и перейти к методу POST. Дайте мне знать, чего не хватает. И web.xml:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:spring/applicationContext*.xml</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 


<servlet> 
    <servlet-name>Dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

    <load-on-startup>1</load-on-startup> 
</servlet> 

Диспетчерский файл сервлетов, как показано ниже:

<mvc:annotation-driven /> 

<context:annotation-config /> 
<context:component-scan  base-package="com.controller,com.serviceImpl,com.daoImpl" /> 


<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" 
    id="viewResolver"> 
    <property name="viewClass"> 
     <value> 
      org.springframework.web.servlet.view.tiles2.TilesView 
     </value> 
    </property> 
</bean> 
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" 
    id="tilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/plugin/impl/tiles/springtiles-defs.xml</value> 
     </list> 
    </property> 
</bean> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="jdbc/myDS" /> 
</bean> 
<bean 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
    id="sessionFactory"> 
    <property name="dataSource" ref="dataSource"></property> 

    <property name="configLocation"> 
     <value>/WEB-INF/config/hibernate.cfg.xml</value> 
    </property> 

    <property name="configurationClass"> 
     <value>org.hibernate.cfg.AnnotationConfiguration</value> 
    </property> 

    <property name="hibernateProperties"> 
     <props> 
      <!-- <prop key="current_session_context_class">thread</prop> --> 
      <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect </prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager"/> 

+0

В чем проблема? запрос не идет? форма не отправляется? ошибка в хром или в java? – Youssef

+0

Форма отправляется, но я хочу остаться на той же странице jsp, которая не работает нормально. Я обновил свой контроллер и jsp в вопросе. POST контроллера не вызван вообще. И есть исключение 404, как только я нажимаю на Go. – JaveDeveloper

+0

вы можете разместить URL до и после того, как вы нажмете на Go? – Youssef

ответ

0

ваш код выглядит нормально, как от клиента и на стороне сервера (я havent проверен, если вы правильно сопоставили свой объект формы, и вы отправили havent, если у вашего контроллера есть значение RequestMapping), но единственная проблема заключается в действии формы, в которой y ou не применяли указанный URL в действии, поэтому всякий раз, когда вы нажимаете кнопку, он просто вызывает функцию JS и не отправляет форму. Так что, если вы могли бы изменить

<form:form method="post" modelAttribute="clientForm" commandName = "clientForm" action=""> 

в

<form:form method="post" modelAttribute="clientForm" commandName = "clientForm" action="YOUR_URL"> 

и проверить связанный ответ here

или проверить этот учебник here, в котором он перенаправляет всякий раз, когда форма получает представлены в одной и той же странице

Редактировать:

в вашем web.xml настроить сервлет по имени грузоотправитель и ниже применить отображение запроса на:

<servlet-mapping> 
    <servlet-name>paswDispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

, если у вас есть 2 сервлеты, то вам не хватает какой-то конфигурации, либо, если это единственное изменение сервлет до

<servlet-mapping> 
    <servlet-name>Dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
+0

Я дал действие = "/ addfeeMaintenance.do", и то же самое дается в контроллере как: @RequestMapping (value = "/ addFeeMaintainance.do ") Открытый класс MyController {}, и он говорит, что не смог найти URL-адрес. Поэтому я попытался удалить действие. Не уверен, что не хватает. – JaveDeveloper

+0

Ошибка 404: com.ibm.ws.webcontainer.servlet.exception.NoTargetForURIException: Нет target servlet, настроенный для uri: /addFeeMaintainance.do: Это ошибка, которую я получаю после добавления действия в форму. – JaveDeveloper

+0

попытайтесь добавить для каждого метода, что у вас есть еще один '@ RequestMapping', и примените метод запроса, значение url там, а не над объявлением класса – AntJavaDev