2011-11-11 10 views
5

sto passando valore param in include tag nella pagina JSP come qui di seguitoStruts2 accesso includono valore param in un'altra pagina JSP in puntoni se tag

<s:include value="../../commonjspf/status.jspf"> 
     <s:param name="mystatus" value="%{status}"> 
     </s:param> 
    </s:include> 

dove variabile di stato vengono dalla classe azione.

Desidero accedere a quel parametro mystatus nella pagina status.jspf nei puntoni se il tag confronta con i miei valori predefiniti.

<s:if test =""> 
    </s:if> 

o

<s:set name="" value =""/> 

qualsiasi tag di cui sopra.

come posso accedere?

per favore suggerirmi.

Grazie.

risposta

4

Eventuali parametri aggiuntivi forniti alla pagina inclusa non sono accessibili all'interno della pagina visualizzata tramite il tag poiché non verrà creato alcun valore. fare riferimento alla documentazione di Struts2 per i dettagli.

Struts2 Include tag

È possibile, tuttavia, accedere ad essi in un servlet tramite l'oggetto HttpServletRequest o da una pagina JSP tramite uno scriptlet.something come

${param.ParamName} 
+0

Grazie è display ma voglio confrontare questo valore. come posso confrontare questo valore? –

+0

devi accedervi in ​​jsp tramite l'oggetto HttpServletRequest o da una pagina JSP tramite uno scriptlet. Devi accedere a questi parametri usando la semplice richiesta HTTPServlet qualcosa come <% = request.getParameter ("type")%>. Spero che questo ti aiuti –

+0

possiamo impostare $ {param.ParamName} in qualsiasi variabile o in

8

usando la notazione ${param.ParamName} per accedervi, come indicato nella seguente riferimento:

http://struts.apache.org/2.0.14/docs/include.html

Un codice di esempio:

Pagina 1:

 <s:include value="testPage.jsp"> 
      <s:param name="mystatus">TestThis</s:param> 
     </s:include> 

Pagina 2:

<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<s:if test='%{#attr.mystatus == "TestThis"}'> 
    This is what we want 
</s:if> 
<s:else> 
    This is not what we want 
</s:else> 
+0

Grazie è display ma voglio confrontare questo valore. come posso confrontare questo valore? –

+0

Si prega di consultare il codice di esempio. –

+1

Grazie, funziona anche per me! –

2

vorrei solo gettare questo come un'alternativa all'utilizzo del puntone include tag.

È possibile invece utilizzare il tag jsp:include e utilizzare i montanti s:push tag per spingere i parametri nello stack e renderli disponibili nella pagina inclusa, si aggiunge un paio di righe in più in jsp, ma è molto più flessibile, come si può passare oggetti anziché semplici stringhe nel JSP incluso.

La natura del tag push indica che una volta eseguiti i parametri vengono nuovamente inseriti dallo stack.

JSP primaria

<s:push value="#{'someStringParam':'some string', 'someObjectParam': someObject}"> 
    <jsp:include page="../includes/user-tabs.jsp" /> 
    </s:push> 

Incluso JSP

<s:property value="someStringParam" /> 

<s:if test="someObjectParam.someValue > 10"> 
    Result! 
</s:else> 
2

costruzione dalla risposta James', questo mi ha aiutato nella mia pagina 2:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page isELIgnored="false" %> 
<c:set var="mystatus" value="${param.mystatus}" scope="page"/> 
<c:if test="${empty mystatus}"> 
    <c:set var="mystatus" value="default status here" /> 
</c:if> 
1

Se sei passare un valore da una pag e ad un altro (come sotto) fare attenzione alla sintassi. È necessario inserire virgolette singole attorno al testo del nome che si sta passando, altrimenti è considerato il nome di una variabile.

<s:include value="other.jsp"> 
    <s:param name="thevar" value="'text i want to see'" /> 
</s:include> 

Poi, nella pagina "other.jsp" si vedrà il "testo che voglio vedere" se lo fai come segue:

${param.thevar} 

Se, invece non posizionare le virgolette singole nell'attributo valore param, non vedi nulla nella pagina other.jsp.

Lo dico solo perché ho visto questo molte volte.

Problemi correlati