Параметр запроса - пустые методы вызова в MultiActionController - PullRequest
0 голосов
/ 03 сентября 2010

весной 3.0

если у меня есть страница jsp с двумя разными ссылками, каждая из которых вызывает другой метод в MultiActionController

<form:form method="POST">
    <a href="user.htm?action=add" style="color: blue;">Add</a>
    <a href="user.htm?action=delete" style="color: blue;">Delete</a>
</form:form>

в MultiActionController я получаю параметр запроса как нулевой, поэтому не может проверить значения

String username=request.getParameter("username");
String password=request.getParameter("password");

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

 <form:form action="user.htm?action=add method="POST">
     <input type="submit" value="I have info"/>"> ---> should call delete method
     <input type="submit" value="Click to send info"/> ---> should call add method 

    </form:form>

хочу добиться этого без JavaScript

Я также установил восстановление параметров в xml-файле с методом по умолчанию для вызова

позвольте мне снова объяснить мою проблему, забудьте про приведенный выше код, который я только что привел в качестве примера

У меня есть страница jsp, в которой есть два поля ввода текста и две ссылки, каждая из которых должна вызывать разные методы контроллера, оба метода проверят правильность ввода и просто перенаправят на другую страницу !!

Причина, по которой я использую MultiActionController ....... К сожалению, я должен продолжать использовать контроллер, который расширяет MultiActionController, потому что та же страница JSP также имеет подкачку, которая работает абсолютно нормально

Итак, все, что я хочу сделать, - это просто выполнить проверку на стороне сервера и на стороне клиента после нажатия любой из ссылок и перенаправления соответствующим образом.

Пожалуйста, дайте мне пример, чтобы двигаться вперед в этом ...

Я хочу достичь этого без JavaScript, я получил этот пример здесь но моя проблема заключается в том, почему requestParameter имеет значение Null

http://www.goospoos.com/2009/11/spri...oller-example/

Вот мой код

<bean id="myExampleController" class="com.ui.controller.MyExampleController">
            <property name="methodNameResolver">
            <ref bean="paramResolver" />
        </property> 
        <property name="validators" ref="myExampleValidator"/>       
    </bean>

    <bean id="paramResolver"
        class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="defaultMethodName" value="loadPage"></property>  
<property name="paramName">
<value>action</value>            
</property>     
</bean>

<bean id="myExampleValidator" class="com.validator.MyExampleValidator" />

Контроллер

public ModelAndView validateValues(HttpServletRequest request, HttpServletResponse response) throws Exception{
ModelAndView mav=null;
----> this is null ??? 
String value1=request.getParameter("textvalue1");
String value2=request.getParameter("textvalue2");


mav = new ModelAndView("myexample");
mav=getPageData(request, false); 
return mav;

}

JSP страница

<form action="myexample.htm" method="post">

input type="text" name="textvalue1" size="20" />
input type="text" name="textvalue2" size="20" />
</form>

<a href="myexample.htm?action=validateValues">click to validate</a>

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

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012
Then below works for me

UI

  <form:form action="user.htm?action=add method="POST">  
<input type="submit" name="add"/>

на стороне сервера

(WebUtils.hasSubmitParameter(request, "add")
0 голосов
/ 06 сентября 2010

Вам следует подумать о повторной работе вашего контроллера.Ваши желаемые операции должны контекстуально подпадать под семантический идентификатор.Для операций CRUD (создание, чтение, обновление, удаление) для объекта «Пользователь» можно настроить RequestMappings, например:

  • / user (страница индекса корневого пользователя, список всех пользователей)
  • / user / add (создать нового пользователя)
  • / user / delete / {id} (удалить пользователя по id)
  • / user / {id} (найти пользователя поid)

На уровне контроллера вы можете выполнить это следующим образом:

@RequestMapping(value="/user")
public class UserController
{
    @RequestMapping(method=RequestMethod.GET)
    public String getListUsers() // default page that is resolved by /user
    {
        return "user/list"; // used by view resolver
    }

    @RequestMapping(value="/add.html" method=RequestMethod.GET)
    public String getAddUser(Model model)
    {
        //add person form backing entity to model
        return "user/add"; // used by view resolver to locate view
    }

    @RequestMapping(value="/add.html" method=RequestMethod.POST)
    public String postAddUser(@ModelAttribute person) // other objects for errors, etc.
    {
        // add person, validate person, etc.
        return "redirect:/user"; // redirects to index
    }
}

и так далее ... вы будете следовать этим шаблонам для других URI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...