2016-05-15 26 views
0

Verwenden von JSP und Servlets und NetBeans IDE.JSTL und href übergeben Parameter

Ich übergebe einen Parameter über href wie folgt.

<a href="coursematerial.jsp?param1=${row.COURSEID}"><c:out value="${row.COURSEID}"/> 

nun in der nächsten jsp, ich mag die Parameter speichern i passed.how könnte ich das tun und die gespeicherte Parameter auf den verborgenen Eingang in Form zu schicken? i versuchen

<input type="hidden" name="courseid" value=<%= request.getParameter("param1")%> > 

verwenden, aber da es eine andere href ist, bevor die Form durchgeführt werden, gefüllt ist, wird der Wert als null wiedergewonnen.

Gibt es eine Möglichkeit, den erforderlichen Parameter als eine Sitzung zu speichern (ohne Skripting, aber mit JSTL) und abrufen, ohne es als href übergeben?

+0

können Sie versuchen, von sawyinwaimon

Antwort

0

Ich weiß nicht, ob es mit jstl möglich ist. Aber Sie können Flash-Bereich verwenden. Dieses Attribut wird dort noch als nächstes jsp gemäß Ihrer Anforderung sein. Verwenden Sie diesen einfachen Code, um den Flash-Bereich zu implementieren.

Zum Beispiel eine Nachricht hinzuzufügen Umfang zu blinken, benutzen Sie einfach die normale Syntax für eine Anfrage scoped Attribut hinzufügen und lassen Sie die fite kümmert sich um sie:

request.setAttribute("flash.message", "Here is the news..."); 

Das obige Attribut kann dann in zugegriffen werden die Umleitung Ziel JSP mit EL oder scriptlet Syntax (die Weglassen Vorsilbe 'Flash'.):

${message} 
or 
<%= request.getAttribute("message") %> 

Hier ist der Code für die Filter:

import javax.servlet.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
import java.io.IOException; 
import java.util.Enumeration; 
import java.util.HashMap; 
import java.util.Map; 

/** 
* Ensures that any request parameters whose names start 
* with 'flash.' are available for the next request too. 
*/ 
public class FlashScopeFilter implements Filter { 

    private static final String FLASH_SESSION_KEY = "FLASH_SESSION_KEY"; 

    @SuppressWarnings("unchecked") 
    public void doFilter(ServletRequest request, ServletResponse response, 
        FilterChain chain) throws IOException, ServletException { 

     //reinstate any flash scoped params from the users session 
     //and clear the session 
     if (request instanceof HttpServletRequest) { 
      HttpServletRequest httpRequest = (HttpServletRequest) request; 
      HttpSession session = httpRequest.getSession(false); 
      if (session != null) { 
       Map<String, Object> flashParams = (Map<String, Object>) 
            session.getAttribute(FLASH_SESSION_KEY); 
       if (flashParams != null) { 
        for (Map.Entry<String, Object> flashEntry : flashParams.entrySet()) { 
         request.setAttribute(flashEntry.getKey(), flashEntry.getValue()); 
        } 
        session.removeAttribute(FLASH_SESSION_KEY); 
       } 
      } 
     } 

     //process the chain 
     chain.doFilter(request, response); 

     //store any flash scoped params in the user's session for the 
     //next request 
     if (request instanceof HttpServletRequest) { 
      HttpServletRequest httpRequest = (HttpServletRequest) request; 
      Map<String, Object> flashParams = new HashMap(); 
      Enumeration e = httpRequest.getAttributeNames(); 
      while (e.hasMoreElements()) { 
       String paramName = (String) e.nextElement(); 
       if (paramName.startsWith("flash.")) { 
        Object value = request.getAttribute(paramName); 
        paramName = paramName.substring(6, paramName.length()); 
        flashParams.put(paramName, value); 
       } 
      } 
      if (flashParams.size() > 0) { 
       HttpSession session = httpRequest.getSession(false); 
       session.setAttribute(FLASH_SESSION_KEY, flashParams); 
      } 
     } 
    } 

    public void init(FilterConfig filterConfig) throws ServletException { 
     //no-op 
    } 

    public void destroy() { 
     //no-op 
    } 
} 

http://smartkey.co.uk/development/implementing-flash-scope-in-java-web-applications/