2017-06-21 2 views
0

Ich mache 2 Aktionen, action1 zielt darauf ab, einige Informationen zu aktualisieren, action2 soll sie abrufen. Oft verwende ich action2 zum Suchen und eine JSP zum Anzeigen. Jetzt gibt es noch etwas, nachdem Sie die JSP gesehen haben, geben Sie zunächst action1 ein, um etwas zu ändern, dann goto action2, um abzurufen, und springen Sie schließlich zum Jsp, um die Informationen anzuzeigen. Ich benutze Struts2 um es zu erreichen. Aber in der Tat wird die Information nicht geändert, ich muss die Webseite aktualisieren, so dass sie normal angezeigt werden kann. Zuerst denke ich, es ist Cache, der zu dieser Bedingung führt. Also füge ich einige Tags in JSP hinzu, um dies zu vermeiden, und schreibe die URL mit? Time = $ {time} um, aber immer noch vergeblich. Mein Code ist wie folgt.Kann nicht mit Struts2 von einer Aktion zu einem Jsp springen

MessageAction.java:

public String getMessage() throws Exception{ 
     Map<String, Object> session = ActionContext.getContext().getSession();  
     Account account = (Account)(session.get("account")); 
     List<Message> messages = messageBo.getMessageByAccount(account); 
     session.remove("messages"); 
     session.put("messages", messages); 
     time = Long.toHexString(new Date().getTime()); 
     System.out.println(time); 
     return SUCCESS; 

    } 

    @Action(value="modifyMessage", 
      results={ 
      @Result(name="success",location="/getMessage.action",type="redirectAction")}) 
    public String modifyMessage() throws Exception{ 
     HttpServletRequest request = ServletActionContext.getRequest();    
     String field = request.getParameter("field"); 
     String value = request.getParameter("value"); 
     Integer id = Integer.parseInt(request.getParameter("id"));  
     messageBo.updateMessageByField(id, field, value); 
     return SUCCESS; 
    } 

struts.xml:

<action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage"> 
     <result type="redirect">/room/my_message.jsp?time=${time}</result> 
    </action> 

Wie nach der Eingabe action2 direkt an JSP überspringen?

+0

Warum mischen Sie Anmerkungen mit Aktionen in struts.xml? Was ist 'messageBo.updateMessageByField (ID, Feld, Wert);' tun? Veröffentlichen Sie Ihre JSP. –

Antwort

1

Sie sollten sich nicht von der Aktion zu JSP umleiten . Der folgende Code ist redirect Ergebnistyp, der alle Anforderungsattribute und valueStack aus der vorherigen Aktion verlieren, so dass die JSP-Ansicht ohne Modell wird. Der neue Aktionskontext wird für die neue Anforderung erstellt, die das Ergebnis der Umleitung zu jsp ist.

<action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage"> 
    <result type="redirect">/room/my_message.jsp?time=${time}</result> 
</action> 

sollte der Code ändern dispatcher Ergebnistyp zu verwenden, den Standard ist und könnte in XML-Konfiguration weggelassen werden.

<action name="getMessage" class="com.ailonger.action.MessageAction" method="getMessage"> 
    <result>/room/my_message.jsp?time=${time}</result> 
</action> 
0

Nicht sicher über Ihre Anforderung .. Wenn Sie eine Anfrage von einem Servlet auf eine andere Ressource (Servlet, JSP-Datei) zu übermitteln versuchen, verwenden Sie dann

forward(ServletRequest request, ServletResponse response) 
+0

Zum Beispiel logge ich mich in meine Website ein, ich muss durch action2 gehen, um Informationen zu bekommen und sie zum Jsp zu bringen, damit ich die Informationen sehen kann. Jetzt, nachdem ich gesehen habe, möchte ich einige Informationen aktualisieren (in der Jsp gibt es die Update-Funktion). Aber wenn ich in MySQL aktualisiert habe, wird das Jsp nicht aktualisiert und die URL wird nicht geändert, obwohl ich sie um "time = $ {time}" umschreibe. – Saeron

+0

Aktualisieren Sie Ihre Formular-Bean mit den aktualisierten Werten in der Aktion, bevor Sie JSP aufrufen. – jAnA

Verwandte Themen