Как поделиться членом формы в Spring MVC? - PullRequest
1 голос
/ 29 августа 2011

Как сделать значение, полученное из объекта формы, доступным для другого класса. Давайте назовем этот класс Sample.java. Как мне сделать значения, представленные из JSP form доступен для класса Sample.java и сохраняет его для использования до тех пор, пока пользователь не выйдет из системы.

Я попытался добавить публичную переменную String в методе Controller, показанный ниже, а затем создать экземпляр Controller в Sample.java для получения значения, но он всегда возвращает null.

 @RequestMapping( value = "abc/xyz/dummyPath.html", method = RequestMethod.POST )
    public String processThisValue( @ModelAttribute( "myValues" ) MyBean myBean,
            ModelMap model)
    {

        log.info("I am in my controller.........");  

        String valuePassed = myBean.getValuePassed();

        log.info("Prints fine here: " + valuePassed);

        return "";
    }

Ответы [ 2 ]

0 голосов
/ 29 августа 2011

Вы можете использовать Httpsession, чтобы установить пользовательский сеанс внутри контроллера Spring MVC.

public String processThisValue( @RequestParam("value") String value, HttpSession session
        ModelMap model) {

         MyBean.setTheValue("value");
         session.setAttribute("key", MyBean);
         return "somepage";


   }

@ Аннотация области видимости сессии хороша, но как только ваш контроллер становится слишком большим, это может вызвать проблемы с масштабированием.Я предпочитаю старый утомительный HttpSession:)

0 голосов
/ 29 августа 2011

Решение состоит из двух частей:

1)

и оставьте его для использования до тех пор, пока пользователь не выйдет из системы.

Вы можете использовать сессионный компонент Session для хранения значения.

2)

как сделать значения, отправленные из формы JSP, доступными для класса Sample.java

Контроллер сохраняет Переданное значение в этом сессионном компоненте. Класс Simple.java (надеюсь) тоже bean-компонент, доступ к этому bean-компоненту для получения значения.

(на данный момент у меня нет IDE, поэтому мне нужно немного набросать)

@Component
@Scope(BeanDefinition.SCOPE_SESSION)
public class MySessionBean()

  private String content;

  Getter/setter
}

@Controller
...

   @Autowire
   private MySessionBean mySessionBean;

   ...
   public String processThisValue( @ModelAttribute( "myValues" ) MyBean myBean,
        ModelMap model) {
     //myBean is only a simple class!!!!!
     ...
     this.mySessioBean.setContent(valuePassed);
     ...
   }


@Service
public class Sample() {

  @Autowire
  private MySessionBean mySessionBean;

  public void doSomething() {
     System.out.println("the current users value:" + mySessionBean.getValue());
  }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...