2011-11-11 21 views
5

estoy pasando valor de parámetro en la etiqueta include en la página JSP, como a continuaciónstruts2 de acceso incluyen valor de parámetro en otra página JSP en puntales si la etiqueta

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

donde variable de estado provienen de la clase de acción.

Quiero acceder a ese parámetro mystatus en la página status.jspf en struts if tag para compararlo con mis valores predeterminados.

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

o

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

cualquiera de las etiquetas anteriores.

¿cómo puedo acceder?

por favor sugiérame.

Gracias.

Respuesta

4

No se puede acceder a ningún parámetro adicional proporcionado a la página incluida dentro de la página representada a través de la etiqueta, ya que no se creará valuestack. consulte la documentación de Struts2 para más detalles.

Struts2 Include tag

Puede, sin embargo, acceder a ellos en un servlet a través del objeto HttpServletRequest o desde una página JSP a través de un scriptlet.something como

${param.ParamName} 
+0

Gracias es pantalla pero quiero comparar este valor. ¿Cómo puedo comparar este valor? –

+0

tiene que acceder a ellos en jsp a través del objeto HttpServletRequest o desde una página JSP a través de un scriptlet.Así que tiene que acceder a estos parámetros utilizando la solicitud simple HTTPServlet algo así como <% = request.getParameter ("type")%>. Espero que esto te ayude –

+0

podemos establecer $ {param.ParamName} en cualquier variable o en

8

Utilice la notación ${param.ParamName} para acceder a ellos, como se menciona en la referencia siguiente:

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

Un código de ejemplo:

Página 1:

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

Página 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

Gracias es pantalla pero quiero comparar este valor. ¿Cómo puedo comparar este valor? –

+0

Consulte el código de muestra. –

+1

¡Gracias, también funciona para mí! –

2

me gustaría simplemente tirar esto en tan una alternativa al uso de los puntales incluye etiqueta.

su lugar, puede utilizar la etiqueta jsp:include y el uso de los puntales s:push etiqueta para empujar parámetros en la pila y hacer que estén disponibles en la página incluida, se añade un par de líneas adicionales en el JSP, pero es mucho más flexible que pueda pasar objetos en lugar de solo cadenas en el JSP incluido.

La naturaleza de la etiqueta de inserción significa que una vez que haya terminado, los parámetros vuelven a aparecer en la pila.

primaria JSP

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

Incluido JSP

<s:property value="someStringParam" /> 

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

Edificio de la respuesta de James, esto me ayudó en mi Página 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

Si está pasando un valor de una pag e a otro (como a continuación) tenga cuidado con la sintaxis. Debe poner comillas simples alrededor del texto del nombre que está pasando, de lo contrario se considera el nombre de una variable.

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

Luego, en la página "other.jsp" verá el "texto quiero ver" si lo hace de la siguiente manera:

${param.thevar} 

Si, en lugar de no colocar las comillas simples en el atributo de valor de parámetro, no ve nada en la página other.jsp.

Solo lo menciono porque he visto esto muchas veces.

Cuestiones relacionadas