2013-06-10 17 views
5

Jestem początkującym portletami i nie rozumiem różnicy między request.setAttribute a response.setRenderParameter (dla działania). Oba zapisują atrybut w żądaniu i pozwalają na dostęp do niego po. Myślę szczególnie o transmisji pomiędzy funkcją ProcessAction a render, która jest tuż po metodzie akcji.Portlety - różnice między atrybutami setAttribute i setRenderParameter

Wiem, że z setRenderParameter nie możemy "magazynować" obiektu złożonego, ale czy chcę po prostu przesłać String, którego należy użyć?

W takim przypadku należy użyć metody setRenderParameter lub metody setAttribute?

Odpowiedz

7

Cóż, jeden ustawia atrybut na żądanie. Drugi ustawia parametr odpowiedzi. Oczywiście są to różne przedmioty.

response.setRenderParameter jest użyteczny, jeśli chcesz wywoływać różne metody renderowania w oparciu o twoje działanie. Na przykład wyobraź sobie, że twoja metoda działania wysyła wiadomość e-mail i chcesz pokazać użytkownikowi inny widok na sukces i porażkę. W tym przypadku można zrobić coś takiego w swoim ActionMapping

if(sentOK){ 
    response.setRenderParameter("result", "success"); 
}else{ 
    response.setRenderParameter("result", "fail"); 
} 

A potem mają metody dwa RenderMapping:

@RenderMapping(params = "result=success") 
public String success(){ 

@RenderMapping(params = "result=fail") 
public String fail(){ 
+0

doskonały, dziękuję! – user2472508